/// <reference no-default-lib="true"/>
/// <reference path="./bridge.d.ts" />
/// <reference path="./es5/lib.es5.d.ts" />
/// <reference path="./scripthost/lib.scripthost.d.ts" />
/// <reference path="./dom/lib.dom.d.ts" />

declare module "RDPCrystalEDILibrary" {
        /**
         * @callback EDIValidator.ValidationStartedEvent
         * @param   {System.Object}    sender
         * @return  {void}
         */

        /**
         * @callback EDIValidator.ValidationCompletedEvent
         * @param   {System.Object}           sender    
         * @param   {ValidationEventsArgs}    e
         * @return  {void}
         */

        /**
         * @callback EDIValidator.GeneralEvent
         * @param   {number}    progress
         * @return  {void}
         */

        /**
         * @callback EDIValidator.CodeConditionEvent
         * @param   {System.Object}             sender    
         * @param   {CodeConditionEventArgs}    e
         * @return  {void}
         */

        /**
         * @memberof System
         * @callback System.Func
         * @return  {number}
         */

        /**
         * @callback EDIRulesReader.ErrorEvent
         * @param   {System.Object}             sender    
         * @param   {EDIRulesReaderEventArg}    e
         * @return  {void}
         */

        /**
         * @callback EDIRulesReader.GeneralEvent
         * @param   {number}    progress
         * @return  {void}
         */

        /** @namespace System */

        /**
         * @memberof System
         * @callback System.EventHandler
         * @param   {System.Object}                      sender    
         * @param   {FileOperationCompletedEventArgs}    e
         * @return  {void}
         */

        /**
         * @callback EDIFileLoader.EDIFileLoadingCompletedEvent
         * @param   {System.Object}           sender    
         * @param   {FileLoadingEventArgs}    e
         * @return  {void}
         */

        /**
         * @callback EDIFileScrubber.EDIFileScrubbingCompletedEvent
         * @param   {System.Object}           sender    
         * @param   {FileLoadingEventArgs}    e
         * @return  {void}
         */

        /**
         * @callback GeneralEvent
         * @param   {System.Object}    sender
         * @return  {void}
         */

    /**
     * Responsible for generating a 997 Acknowledgement EDI File
     *
     * @public
     * @class Ack997Generator
     */
    interface Ack997Generator {
        /**
         * Segment and element delimiters
         *
         * @instance
         * @public
         * @memberof Ack997Generator
         * @function Delimiters
         * @type Delimiters
         */
        Delimiters: Delimiters | null;
        /**
         * String to insert between segments for formatting
         *
         * @instance
         * @public
         * @memberof Ack997Generator
         * @function SegmentSeparatorString
         * @type string
         */
        SegmentSeparatorString: string | null;
        /**
         * Char used to pad empty spaces
         *
         * @instance
         * @public
         * @memberof Ack997Generator
         * @function PaddingChar
         * @type number
         */
        PaddingChar: number;
        /**
         * Get/set the interchange control number
         *
         * @instance
         * @public
         * @memberof Ack997Generator
         * @function InterchangeControlNumber
         * @type number
         */
        InterchangeControlNumber: number;
        /**
         * Get/set the group control number
         *
         * @instance
         * @public
         * @memberof Ack997Generator
         * @function GroupControlNumber
         * @type number
         */
        GroupControlNumber: number;
        /**
         * Get/set the Transaction Set Control Number
         *
         * @instance
         * @public
         * @memberof Ack997Generator
         * @function TransactionSetControlNumber
         * @type number
         */
        TransactionSetControlNumber: number;
        /**
         * Generates a 997 Acknowledgement EDI file.
         *
         * @instance
         * @public
         * @this Ack997Generator
         * @memberof Ack997Generator
         * @param   {EDIValidator}    ediValidator    The edivalidator
         * @return  {EDIDocument}
         */
        generate(ediValidator: EDIValidator | null): EDIDocument | null;
    }
    interface Ack997GeneratorFunc extends Function {
        prototype: Ack997Generator;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this Ack997Generator
         * @memberof Ack997Generator
         * @return  {void}
         */
        new (): Ack997Generator;
    }
    declare var Ack997Generator: Ack997GeneratorFunc;

    /**
     * @class Trial
     */
    interface Trial {
        /**
         * @instance
         * @public
         * @this Trial
         * @memberof Trial
         * @return  {void}
         */
        check(): void;
    }
    interface TrialFunc extends Function {
        prototype: Trial;
        new (): Trial;
    }
    declare var Trial: TrialFunc;

    /**
     * @static
     * @abstract
     * @public
     * @class Tokens
     */
    interface Tokens {
    }
    interface TokensFunc extends Function {
        prototype: Tokens;
        new (): Tokens;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        COMMA: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        SEMICOLON: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        SPACE: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        EQUAL: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        EQUALS: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        END: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        IFSTATEMENT: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        ELSEIFSTATEMENT: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        IF: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        ELSEIF: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        ELSE: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        NULL: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        SYMBOL: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        SEGPOS: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        ELEMPOS: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        STRINGLIST: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        INTEGERINDEXLIST: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        INTEGERLIST: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        INDEXER: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        INT: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        FLOAT: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        CONDITION: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        GREATERTHAN: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        GREATERTHANOREQUALTO: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        LESSTHAN: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        LESSTHANOREQUALTO: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        NOTEQUAL: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        NOTEQUAL_CASE_INSENSITIVE: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        EQUAL_CASE_INSENSITIVE: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        CONTAINS_CASE_INSENSITIVE: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        NOTCONTAINS_CASE_INSENSITIVE: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        STARTSWITH_CASE_INSENSITIVE: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        NOTSTARTSWITH_CASE_INSENSITIVE: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        ENDSWITH_CASE_INSENSITIVE: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        NOTENDSWITH_CASE_INSENSITIVE: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        CONTAINS: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        NOTCONTAINS: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        STARTSWITH: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        NOTSTARTSWITH: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        ENDSWITH: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        NOTENDSWITH: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        LENGTHEQUAL: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        LENGTHNOTEQUAL: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        LENGTHLESSTHAN: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        LENGTHGREATERTHAN: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        AND: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        OR: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        LEFT: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        LEFTBRACKET: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        RIGHT: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        RIGHTBRACKET: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        DOT: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        THEN: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        LOCALCODE: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        ERROR: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        USAGE: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        ELEMENTLIST: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        REQUIRED: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        NOTUSED: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        OPTIONAL: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        RECOMMENDED: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        NOTRECOMMENDED: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        DEFAULT: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        SegmentNotUsed: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        SegmentRecommended: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        SegmentMissing: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        SegmentNotRecommended: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        ElementHasWrongValue: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        ElementNotUsed: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        ElementRecommended: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        ElementNotRecommended: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        ElementMissing: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        CompositeElementHasWrongValue: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        CompositeElementNotUsed: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        CompositeElementRecommended: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        CompositeElementNotRecommended: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        CompositeElementMissing: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        STRING: TokenDefinition | null;
        /**
         * @static
         * @public
         * @memberof Tokens
         * @type TokenDefinition
         */
        CODECONDITION: TokenDefinition | null;
    }
    declare var Tokens: TokensFunc;

    /**
     * @public
     * @class TokenDefinition
     */
    interface TokenDefinition {
        /**
         * @instance
         * @public
         * @readonly
         * @memberof TokenDefinition
         * @type RegexMatcher
         */
        Matcher: RegexMatcher | null;
        /**
         * @instance
         * @public
         * @readonly
         * @memberof TokenDefinition
         * @type System.Object
         */
        Token: any | null;
    }
    interface TokenDefinitionFunc extends Function {
        prototype: TokenDefinition;
        /**
         * @instance
         * @public
         * @this TokenDefinition
         * @memberof TokenDefinition
         * @param   {string}           regex    
         * @param   {System.Object}    token
         * @return  {void}
         */
        new (regex: string | null, token: any | null): TokenDefinition;
    }
    declare var TokenDefinition: TokenDefinitionFunc;

    /**
     * @class SummaryValidationInfo
     */
    interface SummaryValidationInfo {
        /**
         * @instance
         * @public
         * @memberof SummaryValidationInfo
         * @function SummaryElementPosition
         * @type ElementPosition
         */
        SummaryElementPosition: ElementPosition | null;
        /**
         * Gets or sets the number of segment from ST.
         *
         * @instance
         * @public
         * @memberof SummaryValidationInfo
         * @function NumberOfSegmentFromST
         * @type number
         */
        NumberOfSegmentFromST: number;
        /**
         * @instance
         * @public
         * @memberof SummaryValidationInfo
         * @function SummaryElementValue
         * @type System.Decimal
         */
        SummaryElementValue: System.Decimal;
        /**
         * @instance
         * @public
         * @memberof SummaryValidationInfo
         * @function SummaryElementAggregateValue
         * @type System.Decimal
         */
        SummaryElementAggregateValue: System.Decimal;
        /**
         * @instance
         * @public
         * @memberof SummaryValidationInfo
         * @function LineNumber
         * @type number
         */
        LineNumber: number;
        /**
         * @instance
         * @public
         * @memberof SummaryValidationInfo
         * @function ElementOrdinal
         * @type number
         */
        ElementOrdinal: number;
        /**
         * @instance
         * @public
         * @memberof SummaryValidationInfo
         * @function CompositeElementOrdinal
         * @type number
         */
        CompositeElementOrdinal: number;
        /**
         * @instance
         * @public
         * @memberof SummaryValidationInfo
         * @function LoopID
         * @type string
         */
        LoopID: string | null;
        /**
         * @instance
         * @public
         * @memberof SummaryValidationInfo
         * @function SegmentName
         * @type string
         */
        SegmentName: string | null;
        /**
         * Gets or sets the schema element position.
         *
         * @instance
         * @public
         * @memberof SummaryValidationInfo
         * @function SchemaElementPosition
         * @type string
         */
        SchemaElementPosition: string | null;
    }
    interface SummaryValidationInfoFunc extends Function {
        prototype: SummaryValidationInfo;
        new (): SummaryValidationInfo;
    }
    declare var SummaryValidationInfo: SummaryValidationInfoFunc;

    /**
     * @class SummaryElementsProcessor
     */
    interface SummaryElementsProcessor {
    }
    interface SummaryElementsProcessorFunc extends Function {
        prototype: SummaryElementsProcessor;
        new (): SummaryElementsProcessor;
        /**
         * @static
         * @public
         * @this SummaryElementsProcessor
         * @memberof SummaryElementsProcessor
         * @param   {string}                summaryLine
         * @return  {SummaryElementInfo}
         */
        extractSummaryInformation(summaryLine: string | null): SummaryElementInfo | null;
        /**
         * @static
         * @public
         * @this SummaryElementsProcessor
         * @memberof SummaryElementsProcessor
         * @param   {string}             elementPostionString
         * @return  {ElementPosition}
         */
        getElementPosition(elementPostionString: string | null): ElementPosition | null;
    }
    declare var SummaryElementsProcessor: SummaryElementsProcessorFunc;

    /**
     * @class SummaryElementInfo
     */
    interface SummaryElementInfo {
        /**
         * @instance
         * @public
         * @memberof SummaryElementInfo
         * @function SummaryElementPosition
         * @type ElementPosition
         */
        SummaryElementPosition: ElementPosition | null;
        /**
         * @instance
         * @public
         * @memberof SummaryElementInfo
         * @function SummaryChildrenElements
         * @type System.Collections.Generic.List$1
         */
        SummaryChildrenElements: System.Collections.Generic.List$1<ElementPosition> | null;
    }
    interface SummaryElementInfoFunc extends Function {
        prototype: SummaryElementInfo;
        new (): SummaryElementInfo;
    }
    declare var SummaryElementInfo: SummaryElementInfoFunc;

    /**
     * Used by EDIRuleCreator
     *
     * @public
     * @class SummaryDisplay
     */
    interface SummaryDisplay {
        /**
         * Gets or sets the element.
         *
         * @instance
         * @public
         * @memberof SummaryDisplay
         * @function Element
         * @type string
         */
        Element: string | null;
        /**
         * Gets or sets the rule.
         *
         * @instance
         * @public
         * @memberof SummaryDisplay
         * @function Rule
         * @type string
         */
        Rule: string | null;
    }
    interface SummaryDisplayFunc extends Function {
        prototype: SummaryDisplay;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this SummaryDisplay
         * @memberof SummaryDisplay
         * @param   {string}    element    The element.
         * @param   {string}    rule       The rule.
         * @return  {void}
         */
        new (element: string | null, rule: string | null): SummaryDisplay;
    }
    declare var SummaryDisplay: SummaryDisplayFunc;

    /**
     * @class StringSplitter
     */
    interface StringSplitter {
        /**
         * The string buffer container
         *
         * @instance
         * @public
         * @memberof StringSplitter
         * @type Array.<string>
         */
        buffer: string[] | null;
        /**
         * Returns a string array that contains the substrings in this instance that are delimited by 
         elements of a specified string or Unicode character array. This method is unsafe and can throw 
         IndexOutOfRange exception if we overflow the buffer
         *
         * @instance
         * @public
         * @this StringSplitter
         * @memberof StringSplitter
         * @param   {string}    value        
         * @param   {number}    separator
         * @return  {number}                 The number of results found
         */
        split(value: string | null, separator: number): number;
        /**
         * Returns a string array that contains the substrings in this instance that are delimited by 
         a specified string or Unicode character array.
         *
         * @instance
         * @public
         * @this StringSplitter
         * @memberof StringSplitter
         * @param   {string}    value        
         * @param   {string}    separator
         * @return  {number}                 The number of results found
         */
        split$4(value: string | null, separator: string | null): number;
        /**
         * Returns a string array that contains the substrings in this instance that are delimited by 
         elements of a specified string or Unicode character array. This method is unsafe and can throw 
         IndexOutOfRange exception if we overflow the buffer
         *
         * @instance
         * @public
         * @this StringSplitter
         * @memberof StringSplitter
         * @throws IndexOutOfRange
         * @param   {string}            value         
         * @param   {Array.<number>}    separators
         * @return  {number}                          The number of results found
         */
        split$2(value: string | null, separators: number[] | null): number;
        /**
         * Returns a string array that contains the substrings in this instance that are delimited by 
         elements of a specified string or Unicode character array. This method is unsafe and can throw 
         IndexOutOfRange exception if we overflow the buffer
         *
         * @instance
         * @public
         * @this StringSplitter
         * @memberof StringSplitter
         * @throws IndexOutOfRange
         * @param   {string}                       value        
         * @param   {number}                       separator    
         * @param   {System.StringSplitOptions}    options
         * @return  {number}                                    The number of results found
         */
        split$1(value: string | null, separator: number, options: System.StringSplitOptions): number;
        /**
         * Returns a string array that contains the substrings in this instance that are delimited by 
         a specified string or Unicode character array.
         *
         * @instance
         * @public
         * @this StringSplitter
         * @memberof StringSplitter
         * @param   {string}                       value        
         * @param   {string}                       separator    
         * @param   {System.StringSplitOptions}    options
         * @return  {number}                                    The number of results found
         */
        split$5(value: string | null, separator: string | null, options: System.StringSplitOptions): number;
        /**
         * Returns a string array that contains the substrings in this instance that are delimited by 
         elements of a specified string or Unicode character array. This method is unsafe and can throw 
         IndexOutOfRange exception if we overflow the buffer
         *
         * @instance
         * @public
         * @this StringSplitter
         * @memberof StringSplitter
         * @throws IndexOutOfRange
         * @param   {string}                       value         
         * @param   {Array.<number>}               separators    
         * @param   {System.StringSplitOptions}    options
         * @return  {number}                                     The number of results found
         */
        split$3(value: string | null, separators: number[] | null, options: System.StringSplitOptions): number;
        /**
         * Returns a string array that contains the substrings in this instance that are delimited by 
         elements of a specified string or Unicode character array.
         This method is safe and will
         automatically adjust the buffer if needed
         *
         * @instance
         * @public
         * @this StringSplitter
         * @memberof StringSplitter
         * @param   {string}    value        
         * @param   {number}    separator
         * @return  {number}                 The number of results found
         */
        safeSplit(value: string | null, separator: number): number;
        /**
         * Split the string
         *
         * @instance
         * @public
         * @this StringSplitter
         * @memberof StringSplitter
         * @param   {string}    value        The number of results found
         * @param   {string}    separator
         * @return  {number}
         */
        safeSplit$4(value: string | null, separator: string | null): number;
        /**
         * Returns a string array that contains the substrings in this instance that are delimited by 
         elements of a specified string or Unicode character array. This method is unsafe and can throw 
         IndexOutOfRange exception if we overflow the buffer
         *
         * @instance
         * @public
         * @this StringSplitter
         * @memberof StringSplitter
         * @param   {string}            value         
         * @param   {Array.<number>}    separators
         * @return  {number}                          The number of results found
         */
        safeSplit$2(value: string | null, separators: number[] | null): number;
        /**
         * Returns a string array that contains the substrings in this instance that are delimited by 
         elements of a specified string or Unicode character array.
         This method is safe and will
         automatically adjust the buffer if needed
         *
         * @instance
         * @public
         * @this StringSplitter
         * @memberof StringSplitter
         * @param   {string}                       value        
         * @param   {number}                       separator    
         * @param   {System.StringSplitOptions}    options
         * @return  {number}                                    The number of results found
         */
        safeSplit$1(value: string | null, separator: number, options: System.StringSplitOptions): number;
        /**
         * Split the string
         *
         * @instance
         * @public
         * @this StringSplitter
         * @memberof StringSplitter
         * @param   {string}                       value        The number of results found
         * @param   {string}                       separator    
         * @param   {System.StringSplitOptions}    options
         * @return  {number}
         */
        safeSplit$5(value: string | null, separator: string | null, options: System.StringSplitOptions): number;
        /**
         * Returns a string array that contains the substrings in this instance that are delimited by 
         elements of a specified string or Unicode character array. This method is unsafe and can throw 
         IndexOutOfRange exception if we overflow the buffer
         *
         * @instance
         * @public
         * @this StringSplitter
         * @memberof StringSplitter
         * @throws IndexOutOfRange
         * @param   {string}                       value         
         * @param   {Array.<number>}               separators    
         * @param   {System.StringSplitOptions}    options
         * @return  {number}                                     The number of results found
         */
        safeSplit$3(value: string | null, separators: number[] | null, options: System.StringSplitOptions): number;
    }
    interface StringSplitterFunc extends Function {
        prototype: StringSplitter;
        /**
         * Create a new StringSplitter object with the given buffer size
         *
         * @instance
         * @public
         * @this StringSplitter
         * @memberof StringSplitter
         * @param   {number}    bufferSize
         * @return  {void}
         */
        new (bufferSize: number): StringSplitter;
    }
    declare var StringSplitter: StringSplitterFunc;

    /**
     * Snip Levels
     *
     * @public
     * @class SnipTestLevel
     */
    enum SnipTestLevel {
        DoesNotApply = 0,
        Integrity = 1,
        Requirement = 2,
        Balance = 3,
        Situational = 4,
        CodeSet = 5
    }

    /**
     * Simple LogicProcessor class is responsible for preforming logical operations on the values of elements
     *
     * @static
     * @abstract
     * @class SimpleLogicProcessor
     */
    interface SimpleLogicProcessor {
    }
    interface SimpleLogicProcessorFunc extends Function {
        prototype: SimpleLogicProcessor;
        new (): SimpleLogicProcessor;
        /**
         * Takes an element value and based on a rule operator performs a logical operation - Self Rules
         *
         * @static
         * @public
         * @this SimpleLogicProcessor
         * @memberof SimpleLogicProcessor
         * @param   {string}                                  elementValue         
         * @param   {System.Collections.Generic.HashSet$1}    conditionalValues    
         * @param   {RuleOperator}                            op
         * @return  {boolean}                                                      true if condition met, false otherwise
         */
        checkCondition$1(elementValue: string | null, conditionalValues: System.Collections.Generic.HashSet$1<string> | null, op: RuleOperator): boolean;
        /**
         * @static
         * @public
         * @this SimpleLogicProcessor
         * @memberof SimpleLogicProcessor
         * @param   {string}          elementValue        
         * @param   {string}          conditionalValue    
         * @param   {RuleOperator}    op
         * @return  {boolean}
         */
        checkCondition$2(elementValue: string | null, conditionalValue: string | null, op: RuleOperator): boolean;
        /**
         * Performs a local operation of elements found in a segment based on the rule operator and element values - Self Rules
         *
         * @static
         * @public
         * @this SimpleLogicProcessor
         * @memberof SimpleLogicProcessor
         * @param   {number}                                     elementNumber    Oridinal# of Element
         * @param   {System.Collections.Generic.HashSet$1}       elementValues    Possible values for element
         * @param   {System.Collections.Generic.Dictionary$2}    foundElements    Found elements in the segment
         * @param   {RuleOperator}                               op               rule operator
         * @return  {boolean}                                                     true if condition met, false otherwise
         */
        checkCondition(elementNumber: number, elementValues: System.Collections.Generic.HashSet$1<string> | null, foundElements: System.Collections.Generic.Dictionary$2<number,string> | null, op: RuleOperator): boolean;
    }
    declare var SimpleLogicProcessor: SimpleLogicProcessorFunc;

    /**
     * This class is resonsible for taking a string and extracting the rules from it
     *
     * @static
     * @abstract
     * @public
     * @class SemanticsProcessor
     */
    interface SemanticsProcessor {
    }
    interface SemanticsProcessorFunc extends Function {
        prototype: SemanticsProcessor;
        new (): SemanticsProcessor;
        /**
         * @static
         * @public
         * @this SemanticsProcessor
         * @memberof SemanticsProcessor
         * @param   {string}                                     ruleString    
         * @param   {System.Collections.Generic.Dictionary$2}    codeLists
         * @return  {SemanticRule}
         */
        extractSemanticRule(ruleString: string | null, codeLists: System.Collections.Generic.Dictionary$2<string,CodeList> | null): SemanticRule | null;
        /**
         * @static
         * @private
         * @this SemanticsProcessor
         * @memberof SemanticsProcessor
         * @param   {SemanticRule}    rule               
         * @param   {string}          elseUsageString
         * @return  {void}
         */
        /**
         * @static
         * @private
         * @this SemanticsProcessor
         * @memberof SemanticsProcessor
         * @param   {SemanticRule}    rule           
         * @param   {string}          usageString
         * @return  {void}
         */
        /**
         * @static
         * @private
         * @this SemanticsProcessor
         * @memberof SemanticsProcessor
         * @param   {SemanticRule}    rule            
         * @param   {string}          condOperator
         * @return  {void}
         */
        /**
         * @static
         * @private
         * @this SemanticsProcessor
         * @memberof SemanticsProcessor
         * @param   {string}             elementPostionString
         * @return  {ElementPosition}
         */
    }
    declare var SemanticsProcessor: SemanticsProcessorFunc;

    /**
     * Represents a rule that a segment or element must conform to
     *
     * @public
     * @class SemanticRule
     */
    interface SemanticRule {
        /**
         * The segment/element position that this rule is based on
         *
         * @instance
         * @public
         * @memberof SemanticRule
         * @function BaseSegmentPosition
         * @type ElementPosition
         */
        BaseSegmentPosition: ElementPosition | null;
        /**
         * The segment position of the segment/element that this rule is for
         *
         * @instance
         * @public
         * @memberof SemanticRule
         * @function DependentSegmentPosition
         * @type ElementPosition
         */
        DependentSegmentPosition: ElementPosition | null;
        /**
         * Get/set the default values that the base segment's element must have when rule is applied
         *
         * @instance
         * @public
         * @memberof SemanticRule
         * @function DefaultValues
         * @type System.Collections.Generic.HashSet$1
         */
        DefaultValues: System.Collections.Generic.HashSet$1<string> | null;
        /**
         * Get/set the accepted values that the base segment's element must contain when rule is applied
         *
         * @instance
         * @public
         * @memberof SemanticRule
         * @function AcceptedValues
         * @type System.Collections.Generic.HashSet$1
         */
        AcceptedValues: System.Collections.Generic.HashSet$1<string> | null;
        /**
         * Get/set the conditional values that the base segment's element should have when rule is applied.  The conditional values
         are values that the base segment's element must contain for the rule to be applied
         *
         * @instance
         * @public
         * @memberof SemanticRule
         * @function ConditionalValues
         * @type System.Collections.Generic.HashSet$1
         */
        ConditionalValues: System.Collections.Generic.HashSet$1<string> | null;
        /**
         * Get/Set the rule operator for rule
         *
         * @instance
         * @public
         * @memberof SemanticRule
         * @function RuleOperator
         * @type RuleOperator
         */
        RuleOperator: RuleOperator;
        /**
         * Get/set the usage of the segment or element who holds this rule
         *
         * @instance
         * @public
         * @memberof SemanticRule
         * @function Usage
         * @type Usage
         */
        Usage: Usage;
        /**
         * Get/set the usage of the segment or element usage when the rule condition evaluates to false
         *
         * @instance
         * @public
         * @memberof SemanticRule
         * @function ElseUsage
         * @type Usage
         */
        ElseUsage: Usage;
        /**
         * Returns a string representation of this object
         *
         * @instance
         * @public
         * @override
         * @this SemanticRule
         * @memberof SemanticRule
         * @return  {string}        string representation of this object
         */
        toString(): string | null;
    }
    interface SemanticRuleFunc extends Function {
        prototype: SemanticRule;
        /**
         * Creates a new SemanticRule object
         *
         * @instance
         * @public
         * @this SemanticRule
         * @memberof SemanticRule
         * @return  {void}
         */
        new (): SemanticRule;
    }
    declare var SemanticRule: SemanticRuleFunc;

    /**
     * Represents a rule that a segment uses to check itself
     *
     * @public
     * @class SelfRule
     */
    interface SelfRule {
        /**
         * Get/set the element number that the rule will apply to
         *
         * @instance
         * @public
         * @memberof SelfRule
         * @function ElementNumber
         * @type number
         */
        ElementNumber: number;
        /**
         * Get/set the possible values that will trigger the rule
         *
         * @instance
         * @public
         * @memberof SelfRule
         * @function ElementValues
         * @type System.Collections.Generic.HashSet$1
         */
        ElementValues: System.Collections.Generic.HashSet$1<string> | null;
        /**
         * Get/set the rule operator
         *
         * @instance
         * @public
         * @memberof SelfRule
         * @function RuleOperator
         * @type RuleOperator
         */
        RuleOperator: RuleOperator;
        /**
         * Get/set the elements that must be used when the rule is applied
         *
         * @instance
         * @public
         * @memberof SelfRule
         * @function UsedElementCollection
         * @type System.Collections.Generic.List$1
         */
        UsedElementCollection: System.Collections.Generic.List$1<number> | null;
        /**
         * Get/set the elements that must not be used when the rule is applied
         *
         * @instance
         * @public
         * @memberof SelfRule
         * @function NotUsedElementCollection
         * @type System.Collections.Generic.List$1
         */
        NotUsedElementCollection: System.Collections.Generic.List$1<number> | null;
        /**
         * Returns the not used elements as a string with element number delimited by
         a space
         *
         * @instance
         * @public
         * @this SelfRule
         * @memberof SelfRule
         * @return  {string}
         */
        getNotUsedOrdinalsString(): string | null;
        /**
         * Returns the not used elements as a string with element number delimited by
         a the separator character
         *
         * @instance
         * @public
         * @this SelfRule
         * @memberof SelfRule
         * @param   {number}    separator
         * @return  {string}                 separator character
         */
        getNotUsedOrdinalsString$1(separator: number): string | null;
        /**
         * Returns the used elements as a string with element number delimited by
         a space
         *
         * @instance
         * @public
         * @this SelfRule
         * @memberof SelfRule
         * @return  {string}
         */
        getUsedOrdinalsString(): string | null;
        /**
         * Returns the used elements as a string with element number delimited by
         a the separator character
         *
         * @instance
         * @public
         * @this SelfRule
         * @memberof SelfRule
         * @param   {number}    separator
         * @return  {string}                 separator character
         */
        getUsedOrdinalsString$1(separator: number): string | null;
        /**
         * Returns a comma separated list of the element values that will trigger
         the rule
         *
         * @instance
         * @public
         * @this SelfRule
         * @memberof SelfRule
         * @return  {string}
         */
        getCommaSeparatedElementValues(): string | null;
    }
    interface SelfRuleFunc extends Function {
        prototype: SelfRule;
        /**
         * Creates a new SelfRule object
         *
         * @instance
         * @public
         * @this SelfRule
         * @memberof SelfRule
         * @return  {void}
         */
        new (): SelfRule;
    }
    declare var SelfRule: SelfRuleFunc;

    /**
     * Represent basic segment information used by EDIRulesReader and EDIRulesCreator
     *
     * @public
     * @class SegmentSchema
     */
    interface SegmentSchema {
        /**
         * @instance
         * @public
         * @memberof SegmentSchema
         * @function IsSegmentLoop
         * @type boolean
         */
        IsSegmentLoop: boolean;
        /**
         * Gets or sets the position.
         *
         * @instance
         * @public
         * @memberof SegmentSchema
         * @function Position
         * @type string
         */
        Position: string | null;
        /**
         * Get/set whether segment is the only segment in the loop
         *
         * @instance
         * @public
         * @memberof SegmentSchema
         * @function OnlySegmentInLoop
         * @type boolean
         */
        OnlySegmentInLoop: boolean;
        /**
         * Get/set the name of segment
         *
         * @instance
         * @public
         * @memberof SegmentSchema
         * @function Name
         * @type string
         */
        Name: string | null;
        /**
         * Get the orginal number of segment within the EDI rules file
         *
         * @instance
         * @public
         * @memberof SegmentSchema
         * @function OridinalNumber
         * @type number
         */
        OridinalNumber: number;
        /**
         * Get/set the minimum amount of times segment will appear in its containing loop
         *
         * @instance
         * @public
         * @memberof SegmentSchema
         * @function MinimumOccurrences
         * @type number
         */
        MinimumOccurrences: number;
        /**
         * Get/set the maximum amount of times segment will appear in its containing loop
         *
         * @instance
         * @public
         * @memberof SegmentSchema
         * @function MaximumOccurrences
         * @type number
         */
        MaximumOccurrences: number;
        /**
         * Get/set whether segment repeats indefinitely
         *
         * @instance
         * @public
         * @memberof SegmentSchema
         * @function RepeatIndefinite
         * @type boolean
         */
        RepeatIndefinite: boolean;
        /**
         * Get/set the rules that apply to segment
         *
         * @instance
         * @public
         * @memberof SegmentSchema
         * @function Rules
         * @type System.Collections.Generic.List$1
         */
        Rules: System.Collections.Generic.List$1<SemanticRule> | null;
        /**
         * @instance
         * @public
         * @memberof SegmentSchema
         * @function GeneralRules
         * @type System.Collections.Generic.List$1
         */
        GeneralRules: System.Collections.Generic.List$1<GeneralRule> | null;
        /**
         * Get/set usage of segment within containing loop
         *
         * @instance
         * @public
         * @memberof SegmentSchema
         * @function Usage
         * @type Usage
         */
        Usage: Usage;
        /**
         * Get/set the mask number of the segment
         *
         * @instance
         * @public
         * @memberof SegmentSchema
         * @function MaskNumber
         * @type number
         */
        MaskNumber: number;
    }
    interface SegmentSchemaFunc extends Function {
        prototype: SegmentSchema;
        /**
         * Creates a new SegmentSchema object
         *
         * @instance
         * @public
         * @this SegmentSchema
         * @memberof SegmentSchema
         * @return  {void}
         */
        new (): SegmentSchema;
        /**
         * Creates a new SegmentSchema object
         *
         * @instance
         * @public
         * @this SegmentSchema
         * @memberof SegmentSchema
         * @return  {void}
         */
        ctor: {
            new (): SegmentSchema
        };
        /**
         * Creates a new SegmentSchema object
         *
         * @instance
         * @public
         * @this SegmentSchema
         * @memberof SegmentSchema
         * @param   {string}    segmentName    name of segment
         * @param   {Usage}     usage          usage of segment
         * @return  {void}
         */
        $ctor1: {
            new (segmentName: string | null, usage: Usage): SegmentSchema
        };
        /**
         * Creates a new SegmentSchema object
         *
         * @instance
         * @public
         * @this SegmentSchema
         * @memberof SegmentSchema
         * @param   {string}    segmentName    name of segment
         * @param   {Usage}     usage          usage of segment
         * @param   {number}    maskNumber     mask number to use
         * @return  {void}
         */
        $ctor2: {
            new (segmentName: string | null, usage: Usage, maskNumber: number): SegmentSchema
        };
    }
    declare var SegmentSchema: SegmentSchemaFunc;

    /**
     * Resposible for parsing a segment line
     *
     * @static
     * @abstract
     * @class SegmentProcessor
     */
    interface SegmentProcessor {
    }
    interface SegmentProcessorFunc extends Function {
        prototype: SegmentProcessor;
        new (): SegmentProcessor;
        /**
         * @static
         * @public
         * @this SegmentProcessor
         * @memberof SegmentProcessor
         * @param   {string}                                     elementName          
         * @param   {System.Collections.Generic.Dictionary$2}    compositeSegments
         * @return  {boolean}
         */
        isCompositeElement(elementName: string | null, compositeSegments: System.Collections.Generic.Dictionary$2<string,Segment> | null): boolean;
        /**
         * @static
         * @public
         * @this SegmentProcessor
         * @memberof SegmentProcessor
         * @param   {string}                               pairInfo
         * @return  {System.Collections.Generic.List$1}
         */
        getElementPairs(pairInfo: string | null): System.Collections.Generic.List$1<ElementPairConstraint> | null;
        /**
         * @static
         * @public
         * @this SegmentProcessor
         * @memberof SegmentProcessor
         * @param   {System.String}                        str
         * @return  {System.Collections.Generic.List$1}
         */
        getMasks(str: {v: string | null}): System.Collections.Generic.List$1<string> | null;
        /**
         * @static
         * @public
         * @this SegmentProcessor
         * @memberof SegmentProcessor
         * @param   {string}                                     segmentDataString    
         * @param   {System.Collections.Generic.Dictionary$2}    elements
         * @return  {Segment}
         */
        extractCompositeSegment(segmentDataString: string | null, elements: System.Collections.Generic.Dictionary$2<number,Element> | null): Segment | null;
        /**
         * @static
         * @public
         * @this SegmentProcessor
         * @memberof SegmentProcessor
         * @param   {string}                                     segmentDataString    
         * @param   {System.Collections.Generic.Dictionary$2}    compositeSegments    
         * @param   {System.Collections.Generic.Dictionary$2}    elements
         * @return  {Segment}
         */
        extractSegment(segmentDataString: string | null, compositeSegments: System.Collections.Generic.Dictionary$2<string,Segment> | null, elements: System.Collections.Generic.Dictionary$2<number,Element> | null): Segment | null;
        /**
         * @static
         * @public
         * @this SegmentProcessor
         * @memberof SegmentProcessor
         * @param   {Segment}    segment              
         * @param   {string}     segmentDataString
         * @return  {void}
         */
        processElementConstraints(segment: Segment | null, segmentDataString: string | null): void;
        /**
         * @static
         * @public
         * @this SegmentProcessor
         * @memberof SegmentProcessor
         * @param   {Segment}          segment              
         * @param   {System.String}    segmentDataString
         * @return  {void}
         */
        getPairContraints(segment: Segment | null, segmentDataString: {v: string | null}): void;
        /**
         * @static
         * @public
         * @this SegmentProcessor
         * @memberof SegmentProcessor
         * @param   {Segment}          segment              
         * @param   {System.String}    segmentDataString
         * @return  {void}
         */
        getConditionalConstraints(segment: Segment | null, segmentDataString: {v: string | null}): void;
        /**
         * @static
         * @public
         * @this SegmentProcessor
         * @memberof SegmentProcessor
         * @param   {Segment}          segment              
         * @param   {System.String}    segmentDataString
         * @return  {void}
         */
        getRequirementConstraints(segment: Segment | null, segmentDataString: {v: string | null}): void;
        /**
         * @static
         * @public
         * @this SegmentProcessor
         * @memberof SegmentProcessor
         * @param   {Segment}          segment              
         * @param   {System.String}    segmentDataString
         * @return  {void}
         */
        getListConditionalConstraints(segment: Segment | null, segmentDataString: {v: string | null}): void;
        /**
         * @static
         * @public
         * @this SegmentProcessor
         * @memberof SegmentProcessor
         * @param   {Segment}          segment              
         * @param   {System.String}    segmentDataString
         * @return  {void}
         */
        getExclusionConstraints(segment: Segment | null, segmentDataString: {v: string | null}): void;
        /**
         * @static
         * @public
         * @this SegmentProcessor
         * @memberof SegmentProcessor
         * @param   {string}          op
         * @return  {RuleOperator}
         */
        getRuleOperator(op: string | null): RuleOperator;
        /**
         * @static
         * @public
         * @this SegmentProcessor
         * @memberof SegmentProcessor
         * @param   {string}                                     segmentSelfRule    
         * @param   {System.Collections.Generic.Dictionary$2}    segments
         * @return  {void}
         */
        extractSelfRule(segmentSelfRule: string | null, segments: System.Collections.Generic.Dictionary$2<string,Segment> | null): void;
        /**
         * @static
         * @public
         * @this SegmentProcessor
         * @memberof SegmentProcessor
         * @param   {string}                                     segmentSelfRule    
         * @param   {System.Collections.Generic.Dictionary$2}    compSegments
         * @return  {void}
         */
        extractCompositeSelfRule(segmentSelfRule: string | null, compSegments: System.Collections.Generic.Dictionary$2<string,Segment> | null): void;
    }
    declare var SegmentProcessor: SegmentProcessorFunc;

    /**
     * @public
     * @class Segment
     */
    interface Segment {
        /**
         * Gets or sets the name.
         *
         * @instance
         * @public
         * @memberof Segment
         * @function Name
         * @type string
         */
        Name: string | null;
        /**
         * Gets or sets the index of the loop validation.
         *
         * @instance
         * @public
         * @memberof Segment
         * @function LoopValidationIndex
         * @type number
         */
        LoopValidationIndex: number;
        /**
         * Gets or sets the self rules.
         *
         * @instance
         * @public
         * @memberof Segment
         * @function SelfRules
         * @type System.Collections.Generic.List$1
         */
        SelfRules: System.Collections.Generic.List$1<SelfRule> | null;
        /**
         * @instance
         * @public
         * @memberof Segment
         * @function GeneralSelfRules
         * @type System.Collections.Generic.List$1
         */
        GeneralSelfRules: System.Collections.Generic.List$1<GeneralSelfRule> | null;
        /**
         * Gets or sets the element exclusion constraints.
         *
         * @instance
         * @public
         * @memberof Segment
         * @function ElementExclusionConstraints
         * @type System.Collections.Generic.List$1
         */
        ElementExclusionConstraints: System.Collections.Generic.List$1<ElementExclusionConstraint> | null;
        /**
         * Gets or sets the element list condition constraints.
         *
         * @instance
         * @public
         * @memberof Segment
         * @function ElementListConditionConstraints
         * @type System.Collections.Generic.List$1
         */
        ElementListConditionConstraints: System.Collections.Generic.List$1<ElementListConditionalConstraint> | null;
        /**
         * Gets or sets the element required constraints.
         *
         * @instance
         * @public
         * @memberof Segment
         * @function ElementRequiredConstraints
         * @type System.Collections.Generic.List$1
         */
        ElementRequiredConstraints: System.Collections.Generic.List$1<ElementRequiredConstraint> | null;
        /**
         * Gets or sets the element pair constraints.
         *
         * @instance
         * @public
         * @memberof Segment
         * @function ElementPairConstraints
         * @type System.Collections.Generic.List$1
         */
        ElementPairConstraints: System.Collections.Generic.List$1<ElementPairConstraint> | null;
        /**
         * @instance
         * @public
         * @memberof Segment
         * @function ElementConditionalConstraints
         * @type System.Collections.Generic.List$1
         */
        ElementConditionalConstraints: System.Collections.Generic.List$1<ElementConditionalConstraint> | null;
        /**
         * Gets or sets the element schema.
         *
         * @instance
         * @public
         * @memberof Segment
         * @function ElementSchema
         * @type System.Collections.Generic.List$1
         */
        ElementSchema: System.Collections.Generic.List$1<ElementSchema> | null;
        /**
         * Gets or sets the masks.
         *
         * @instance
         * @public
         * @memberof Segment
         * @function Masks
         * @type System.Collections.Generic.List$1
         */
        Masks: System.Collections.Generic.List$1<Mask> | null;
        /**
         * @instance
         * @this Segment
         * @memberof Segment
         * @param   {number}     elemOrdinal
         * @return  {boolean}
         */
        /**
         * @instance
         * @this Segment
         * @memberof Segment
         * @return  {boolean}
         */
    }
    interface SegmentFunc extends Function {
        prototype: Segment;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this Segment
         * @memberof Segment
         * @return  {void}
         */
        new (): Segment;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this Segment
         * @memberof Segment
         * @return  {void}
         */
        ctor: {
            new (): Segment
        };
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this Segment
         * @memberof Segment
         * @param   {string}    name    The name.
         * @return  {void}
         */
        $ctor1: {
            new (name: string | null): Segment
        };
    }
    declare var Segment: SegmentFunc;

    /**
     * Creates a new scrub rule
     *
     * @public
     * @class ScrubRule
     */
    interface ScrubRule {
        /**
         * Gets or sets the name of the segment.
         *
         * @instance
         * @public
         * @memberof ScrubRule
         * @function SegmentName
         * @type string
         */
        SegmentName: string | null;
        /**
         * Gets or sets the replace character.
         *
         * @instance
         * @public
         * @memberof ScrubRule
         * @function ReplaceCharacter
         * @type number
         */
        ReplaceCharacter: number;
        /**
         * @instance
         * @public
         * @readonly
         * @memberof ScrubRule
         * @function ScrubPositions
         * @type System.Collections.Generic.List$1
         */
        ScrubPositions: System.Collections.Generic.List$1<ScrubPosition> | null;
        /**
         * Add a new scrub position
         *
         * @instance
         * @public
         * @this ScrubRule
         * @memberof ScrubRule
         * @param   {ScrubPosition}    position
         * @return  {void}
         */
        addPosition(position: ScrubPosition | null): void;
    }
    interface ScrubRuleFunc extends Function {
        prototype: ScrubRule;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this ScrubRule
         * @memberof ScrubRule
         * @return  {void}
         */
        new (): ScrubRule;
    }
    declare var ScrubRule: ScrubRuleFunc;

    /**
     * Creates a new Scrub Position
     *
     * @public
     * @class ScrubPosition
     */
    interface ScrubPosition {
        /**
         * Gets or sets the composite element number.
         *
         * @instance
         * @public
         * @memberof ScrubPosition
         * @function CompositeElementNumber
         * @type number
         */
        CompositeElementNumber: number;
        /**
         * Gets or sets the element number.
         *
         * @instance
         * @public
         * @memberof ScrubPosition
         * @function ElementNumber
         * @type number
         */
        ElementNumber: number;
    }
    interface ScrubPositionFunc extends Function {
        prototype: ScrubPosition;
        /**
         * @instance
         * @public
         * @this ScrubPosition
         * @memberof ScrubPosition
         * @return  {void}
         */
        new (): ScrubPosition;
    }
    declare var ScrubPosition: ScrubPositionFunc;

    /**
     * @public
     * @class RuleOperator
     */
    enum RuleOperator {
        EQ = 0,
        NE = 1,
        GT = 2,
        GE = 3,
        LT = 4,
        LE = 5,
        EXISTS = 6,
        NEXIST = 7,
        CONTAINS = 8,
        NOTCONTAINS = 9,
        STARTSWITH = 10,
        NOTSTARTSWITH = 11,
        ENDSWITH = 12,
        NOTENDSWITH = 13,
        LENGTHEQUAL = 14,
        LENGTHNOTEQUAL = 15,
        LENGTHLESSTHAN = 16,
        LENGTHGREATERTHAN = 17,
        EQC = 18,
        NEC = 19,
        CONTAINS_CASE_INSENSITIVE = 20,
        NOTCONTAINS_CASE_INSENSITIVE = 21,
        STARTSWITH_CASE_INSENSITIVE = 22,
        NOTSTARTSWITH_CASE_INSENSITIVE = 23,
        ENDSWITH_CASE_INSENSITIVE = 24,
        NOTENDSWITH_CASE_INSENSITIVE = 25
    }

    /**
     * Used by EDIRuleCreator
     *
     * @public
     * @class RuleDisplay
     */
    interface RuleDisplay {
        /**
         * Gets or sets the position.
         *
         * @instance
         * @public
         * @memberof RuleDisplay
         * @function Position
         * @type string
         */
        Position: string | null;
        /**
         * Gets or sets the rule.
         *
         * @instance
         * @public
         * @memberof RuleDisplay
         * @function Rule
         * @type string
         */
        Rule: string | null;
    }
    interface RuleDisplayFunc extends Function {
        prototype: RuleDisplay;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this RuleDisplay
         * @memberof RuleDisplay
         * @param   {string}    position    The position.
         * @param   {string}    rule        The rule.
         * @return  {void}
         */
        new (position: string | null, rule: string | null): RuleDisplay;
    }
    declare var RuleDisplay: RuleDisplayFunc;

    /**
     * @public
     * @class RegexMatcher
     */
    interface RegexMatcher {
        /**
         * @instance
         * @public
         * @this RegexMatcher
         * @memberof RegexMatcher
         * @param   {string}    text
         * @return  {number}
         */
        match(text: string | null): number;
        /**
         * @instance
         * @public
         * @override
         * @this RegexMatcher
         * @memberof RegexMatcher
         * @return  {string}
         */
        toString(): string | null;
    }
    interface RegexMatcherFunc extends Function {
        prototype: RegexMatcher;
        /**
         * @instance
         * @public
         * @this RegexMatcher
         * @memberof RegexMatcher
         * @param   {string}    regex
         * @return  {void}
         */
        new (regex: string | null): RegexMatcher;
    }
    declare var RegexMatcher: RegexMatcherFunc;

    /**
     * Responsible for checking that a valid license exist
     *
     * @static
     * @abstract
     * @public
     * @class PackageLicense
     */
    interface PackageLicense {
    }
    interface PackageLicenseFunc extends Function {
        prototype: PackageLicense;
        new (): PackageLicense;
        /**
         * RDPCrystal EDI Library Key
         *
         * @static
         * @public
         * @memberof PackageLicense
         * @default ""
         * @type string
         */
        Key: string | null;
        /**
         * @static
         * @this PackageLicense
         * @memberof PackageLicense
         * @return  {Package}
         */
    }
    declare var PackageLicense: PackageLicenseFunc;

    /**
     * @class Package
     */
    enum Package {
        Trial = 0,
        Developer = 1,
        Site = 2,
        Enterprise = 3
    }

    /**
     * Maximum number of errors reached event
     *
     * @public
     * @class MaximumErrorLimitReachedException
     * @augments System.Exception
     */
    interface MaximumErrorLimitReachedException extends System.Exception {
    }
    interface MaximumErrorLimitReachedExceptionFunc extends Function {
        prototype: MaximumErrorLimitReachedException;
    }
    declare var MaximumErrorLimitReachedException: MaximumErrorLimitReachedExceptionFunc;

    /**
     * Represents a mask that segment's use to decide how their elements are used
     *
     * @public
     * @class Mask
     */
    interface Mask {
        /**
         * Get the maskData The number of elements in the Usage collection must equal that of the MaskData collection
         *
         * @instance
         * @public
         * @readonly
         * @memberof Mask
         * @function MaskData
         * @type System.Collections.Generic.List$1
         */
        MaskData: System.Collections.Generic.List$1<string> | null;
        /**
         * Get the usages.  The number of elements in the Usage collection must equal that of the MaskData collection
         *
         * @instance
         * @public
         * @readonly
         * @memberof Mask
         * @function Usages
         * @type System.Collections.Generic.List$1
         */
        Usages: System.Collections.Generic.List$1<Usage> | null;
    }
    interface MaskFunc extends Function {
        prototype: Mask;
        new (): Mask;
    }
    declare var Mask: MaskFunc;

    /**
     * @public
     * @class LoopSchema
     */
    interface LoopSchema {
        /**
         * @instance
         * @public
         * @memberof LoopSchema
         * @function IsSegmentLoop
         * @type boolean
         */
        IsSegmentLoop: boolean;
        /**
         * Gets or sets the description.
         *
         * @instance
         * @public
         * @memberof LoopSchema
         * @function Description
         * @type string
         */
        Description: string | null;
        /**
         * Gets or sets the parent.
         *
         * @instance
         * @public
         * @memberof LoopSchema
         * @function Parent
         * @type LoopSchema
         */
        Parent: LoopSchema | null;
        /**
         * Gets or sets the loop ID.
         *
         * @instance
         * @public
         * @memberof LoopSchema
         * @function LoopID
         * @type string
         */
        LoopID: string | null;
        /**
         * Gets or sets a value indicating whether this {@link } is occurred.
         *
         * @instance
         * @public
         * @memberof LoopSchema
         * @function Occurred
         * @type boolean
         */
        Occurred: boolean;
        /**
         * Gets or sets the min.
         *
         * @instance
         * @public
         * @memberof LoopSchema
         * @function Min
         * @type number
         */
        Min: number;
        /**
         * Gets or sets the max.
         *
         * @instance
         * @public
         * @memberof LoopSchema
         * @function Max
         * @type number
         */
        Max: number;
        /**
         * Gets or sets a value indicating whether this {@link } is indefinite.
         *
         * @instance
         * @public
         * @memberof LoopSchema
         * @function Indefinite
         * @type boolean
         */
        Indefinite: boolean;
        /**
         * Gets or sets the usage.
         *
         * @instance
         * @public
         * @memberof LoopSchema
         * @function Usage
         * @type Usage
         */
        Usage: Usage;
        /**
         * Gets or sets the loops.
         *
         * @instance
         * @public
         * @memberof LoopSchema
         * @function Loops
         * @type System.Collections.Generic.List$1
         */
        Loops: System.Collections.Generic.List$1<LoopSchema> | null;
        /**
         * Gets or sets the segments.
         *
         * @instance
         * @public
         * @memberof LoopSchema
         * @function Segments
         * @type System.Collections.Generic.List$1
         */
        Segments: System.Collections.Generic.List$1<SegmentSchema> | null;
        /**
         * Gets the last segment.
         *
         * @instance
         * @public
         * @readonly
         * @memberof LoopSchema
         * @function LastSegment
         * @type SegmentSchema
         */
        LastSegment: SegmentSchema | null;
        /**
         * Gets the next segment.
         *
         * @instance
         * @public
         * @this LoopSchema
         * @memberof LoopSchema
         * @param   {number}           currentIndex    Index of the current.
         * @return  {SegmentSchema}
         */
        getNextSegment(currentIndex: number): SegmentSchema | null;
    }
    interface LoopSchemaFunc extends Function {
        prototype: LoopSchema;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this LoopSchema
         * @memberof LoopSchema
         * @return  {void}
         */
        new (): LoopSchema;
    }
    declare var LoopSchema: LoopSchemaFunc;

    /**
     * A light weight version of the Loop class
     *
     * @public
     * @class LightWeightLoop
     */
    interface LightWeightLoop {
        /**
         * @instance
         * @public
         * @memberof LightWeightLoop
         * @function IsSegmentLoop
         * @type boolean
         */
        IsSegmentLoop: boolean;
        /**
         * Get/Set the parent of this loop:Rules Reader
         *
         * @instance
         * @public
         * @memberof LightWeightLoop
         * @function Parent
         * @type LightWeightLoop
         */
        Parent: LightWeightLoop | null;
        /**
         * Get/Set a list of segments in this loop
         *
         * @instance
         * @public
         * @memberof LightWeightLoop
         * @function Segments
         * @type System.Collections.Generic.List$1
         */
        Segments: System.Collections.Generic.List$1<LightWeightSegment> | null;
        /**
         * Get/Set the name of this loop
         *
         * @instance
         * @public
         * @memberof LightWeightLoop
         * @function Name
         * @type string
         */
        Name: string | null;
        /**
         * Get/Set the loops contained within this loop
         *
         * @instance
         * @public
         * @memberof LightWeightLoop
         * @function Loops
         * @type System.Collections.Generic.List$1
         */
        Loops: System.Collections.Generic.List$1<LightWeightLoop> | null;
        /**
         * Get the last segment in this loop
         *
         * @instance
         * @public
         * @readonly
         * @memberof LightWeightLoop
         * @function LastSegment
         * @type LightWeightSegment
         */
        LastSegment: LightWeightSegment | null;
        /**
         * Get the first segment in this loop
         *
         * @instance
         * @public
         * @readonly
         * @memberof LightWeightLoop
         * @function FirstSegment
         * @type LightWeightSegment
         */
        FirstSegment: LightWeightSegment | null;
        /**
         * Gets the last loop.
         *
         * @instance
         * @public
         * @this LightWeightLoop
         * @memberof LightWeightLoop
         * @return  {LightWeightLoop}
         */
        getLastLoop(): LightWeightLoop | null;
        /**
         * Gets the loop.
         *
         * @instance
         * @public
         * @this LightWeightLoop
         * @memberof LightWeightLoop
         * @param   {string}             loopName    Name of the loop.
         * @return  {LightWeightLoop}
         */
        getLoop(loopName: string | null): LightWeightLoop | null;
        /**
         * Gets the segment.
         *
         * @instance
         * @public
         * @this LightWeightLoop
         * @memberof LightWeightLoop
         * @param   {string}                name    Name of the segment.
         * @return  {LightWeightSegment}
         */
        getSegment(name: string | null): LightWeightSegment | null;
        /**
         * Gets the segment collection.
         *
         * @instance
         * @public
         * @this LightWeightLoop
         * @memberof LightWeightLoop
         * @param   {string}                               name    Name of the segment.
         * @return  {System.Collections.Generic.List$1}
         */
        getSegments(name: string | null): System.Collections.Generic.List$1<LightWeightSegment> | null;
        /**
         * Gets a segment collection given an element position and value
         *
         * @instance
         * @public
         * @this LightWeightLoop
         * @memberof LightWeightLoop
         * @param   {string}                               name               Name of the segment
         * @param   {number}                               elementPosition    Position of the element in the segment
         * @param   {string}                               elementValue       Value of the element to compare against
         * @return  {System.Collections.Generic.List$1}
         */
        getSegments$1(name: string | null, elementPosition: number, elementValue: string | null): System.Collections.Generic.List$1<LightWeightSegment> | null;
        /**
         * Gets the loop collection.
         *
         * @instance
         * @public
         * @this LightWeightLoop
         * @memberof LightWeightLoop
         * @param   {string}                               loopName    Name of the loop.
         * @return  {System.Collections.Generic.List$1}
         */
        getLoops(loopName: string | null): System.Collections.Generic.List$1<LightWeightLoop> | null;
        /**
         * Determines whether this loop contains a segment.
         *
         * @instance
         * @public
         * @this LightWeightLoop
         * @memberof LightWeightLoop
         * @param   {string}     segmentName    Name of the segment.
         * @return  {boolean}                   <pre><code>true</code></pre> if the specified loop contains segment; otherwise, <pre><code>false</code></pre>.
         */
        containsSegment(segmentName: string | null): boolean;
        /**
         * @instance
         * @private
         * @this LightWeightLoop
         * @memberof LightWeightLoop
         * @return  {void}
         */
        /**
         * Creates the loop.
         *
         * @instance
         * @public
         * @this LightWeightLoop
         * @memberof LightWeightLoop
         * @param   {string}             loopName    The name.
         * @return  {LightWeightLoop}
         */
        createLoop(loopName: string | null): LightWeightLoop | null;
        /**
         * Creates the segment.
         *
         * @instance
         * @public
         * @this LightWeightLoop
         * @memberof LightWeightLoop
         * @param   {string}                segmentName    Name of the segment.
         * @return  {LightWeightSegment}
         */
        createSegment(segmentName: string | null): LightWeightSegment | null;
        /**
         * Returns a {@link } that represents this instance.
         *
         * @instance
         * @public
         * @override
         * @this LightWeightLoop
         * @memberof LightWeightLoop
         * @return  {string}        A {@link } that represents this instance.
         */
        toString(): string | null;
        /**
         * Returns all segments in this loop and its sub loops as a string
         *
         * @instance
         * @public
         * @this LightWeightLoop
         * @memberof LightWeightLoop
         * @param   {Delimiters}    delimiters
         * @return  {string}
         */
        toEDIString(delimiters: Delimiters | null): string | null;
        /**
         * @instance
         * @private
         * @this LightWeightLoop
         * @memberof LightWeightLoop
         * @param   {LightWeightLoop}              loop          
         * @param   {System.Text.StringBuilder}    builder       
         * @param   {Delimiters}                   delimiters
         * @return  {void}
         */
    }
    interface LightWeightLoopFunc extends Function {
        prototype: LightWeightLoop;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this LightWeightLoop
         * @memberof LightWeightLoop
         * @return  {void}
         */
        new (): LightWeightLoop;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this LightWeightLoop
         * @memberof LightWeightLoop
         * @return  {void}
         */
        ctor: {
            new (): LightWeightLoop
        };
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this LightWeightLoop
         * @memberof LightWeightLoop
         * @param   {string}    name    The name of the new loop
         * @return  {void}
         */
        $ctor1: {
            new (name: string | null): LightWeightLoop
        };
    }
    declare var LightWeightLoop: LightWeightLoopFunc;

    /**
     * Exception thrown when a license is invalid
     *
     * @public
     * @class LicenseException
     * @augments System.Exception
     */
    interface LicenseException extends System.Exception {
    }
    interface LicenseExceptionFunc extends Function {
        prototype: LicenseException;
    }
    declare var LicenseException: LicenseExceptionFunc;

    /**
     * @public
     * @class Lexer
     * @implements  System.IDisposable
     */
    interface Lexer extends System.IDisposable {
        /**
         * @instance
         * @public
         * @memberof Lexer
         * @function TokenContents
         * @type string
         */
        TokenContents: string | null;
        /**
         * @instance
         * @public
         * @memberof Lexer
         * @function Token
         * @type System.Object
         */
        Token: any | null;
        /**
         * @instance
         * @public
         * @memberof Lexer
         * @function LineNumber
         * @type number
         */
        LineNumber: number;
        /**
         * @instance
         * @public
         * @memberof Lexer
         * @function Position
         * @type number
         */
        Position: number;
        /**
         * @instance
         * @private
         * @this Lexer
         * @memberof Lexer
         * @return  {void}
         */
        /**
         * @instance
         * @public
         * @this Lexer
         * @memberof Lexer
         * @return  {boolean}
         */
        next(): boolean;
        /**
         * @instance
         * @public
         * @this Lexer
         * @memberof Lexer
         * @return  {void}
         */
        dispose(): void;
    }
    interface LexerFunc extends Function {
        prototype: Lexer;
        /**
         * @instance
         * @public
         * @this Lexer
         * @memberof Lexer
         * @param   {System.IO.TextReader}                 reader              
         * @param   {System.Collections.Generic.List$1}    tokenDefinitions
         * @return  {void}
         */
        new (reader: System.IO.TextReader | null, tokenDefinitions: System.Collections.Generic.List$1<TokenDefinition> | null): Lexer;
    }
    declare var Lexer: LexerFunc;

    /**
     * Represents how a segment/element usage requirements
     *
     * @public
     * @class Usage
     */
    enum Usage {
        NOTUSED = 0,
        REQUIRED = 1,
        RECOMMENDED = 2,
        NOTRECOMMENDED = 3,
        OPTIONAL = 4,
        DEPENDENT = 5,
        LOCALCODE = 6,
        USE_DEFAULT = 7
    }

    /**
     * @class HLException
     * @augments System.Exception
     */
    interface HLException extends System.Exception {
    }
    interface HLExceptionFunc extends Function {
        prototype: HLException;
        new (): HLException;
    }
    declare var HLException: HLExceptionFunc;

    /**
     * @static
     * @abstract
     * @class Utility
     */
    interface Utility {
    }
    interface UtilityFunc extends Function {
        prototype: Utility;
        new (): Utility;
        /**
         * @static
         * @public
         * @this Utility
         * @memberof Utility
         * @param   {System.Collections.Generic.IEnumerable$1}    cd
         * @return  {string}
         */
        getValues(cd: System.Collections.Generic.IEnumerable$1<string> | null): string | null;
        /**
         * @static
         * @public
         * @this Utility
         * @memberof Utility
         * @param   {string}    message
         * @return  {void}
         */
        log(message: string | null): void;
    }
    declare var Utility: UtilityFunc;

    /**
     * An exception that represents an errors that occur while validation is taking place
     *
     * @public
     * @class ValidationException
     * @augments System.Exception
     */
    interface ValidationException extends System.Exception {
    }
    interface ValidationExceptionFunc extends Function {
        prototype: ValidationException;
        /**
         * @instance
         * @public
         * @this ValidationException
         * @memberof ValidationException
         * @param   {string}    message
         * @return  {void}
         */
        $ctor1: {
            new (message: string | null): ValidationException
        };
        /**
         * @instance
         * @public
         * @this ValidationException
         * @memberof ValidationException
         * @param   {string}              message           
         * @param   {System.Exception}    innerException
         * @return  {void}
         */
        $ctor2: {
            new (message: string | null, innerException: System.Exception | null): ValidationException
        };
    }
    declare var ValidationException: ValidationExceptionFunc;

    /**
     * @public
     * @class UsageNode
     * @augments Node
     */
    interface UsageNode extends Node {
        /**
         * @instance
         * @public
         * @memberof UsageNode
         * @function Usage
         * @type Usage
         */
        Usage: Usage;
        /**
         * @instance
         * @public
         * @override
         * @this UsageNode
         * @memberof UsageNode
         * @return  {string}
         */
        toRuleString(): string | null;
        /**
         * @instance
         * @private
         * @this UsageNode
         * @memberof UsageNode
         * @return  {void}
         */
    }
    interface UsageNodeFunc extends Function {
        prototype: UsageNode;
        /**
         * @instance
         * @public
         * @this UsageNode
         * @memberof UsageNode
         * @param   {string}    text     
         * @param   {number}    depth
         * @return  {void}
         */
        new (text: string | null, depth: number): UsageNode;
    }
    declare var UsageNode: UsageNodeFunc;

    /**
     * @public
     * @class StringList
     * @augments Node
     */
    interface StringList extends Node {
        /**
         * @instance
         * @public
         * @memberof StringList
         * @type System.Collections.Generic.List$1
         */
        Values: System.Collections.Generic.List$1<string> | null;
        /**
         * @instance
         * @private
         * @this StringList
         * @memberof StringList
         * @return  {void}
         */
    }
    interface StringListFunc extends Function {
        prototype: StringList;
        /**
         * @instance
         * @public
         * @this StringList
         * @memberof StringList
         * @param   {string}    text     
         * @param   {number}    depth
         * @return  {void}
         */
        new (text: string | null, depth: number): StringList;
    }
    declare var StringList: StringListFunc;

    /**
     * @public
     * @class SelfGeneralRule
     * @augments Node
     */
    interface SelfGeneralRule extends Node {
        /**
         * @instance
         * @public
         * @memberof SelfGeneralRule
         * @function Symbol
         * @type string
         */
        Symbol: string | null;
        /**
         * @instance
         * @public
         * @memberof SelfGeneralRule
         * @function IfStatement
         * @type IfStatement
         */
        IfStatement: IfStatement | null;
        /**
         * @instance
         * @private
         * @this SelfGeneralRule
         * @memberof SelfGeneralRule
         * @return  {void}
         */
    }
    interface SelfGeneralRuleFunc extends Function {
        prototype: SelfGeneralRule;
        /**
         * @instance
         * @public
         * @this SelfGeneralRule
         * @memberof SelfGeneralRule
         * @param   {string}    text     
         * @param   {number}    depth
         * @return  {void}
         */
        new (text: string | null, depth: number): SelfGeneralRule;
    }
    declare var SelfGeneralRule: SelfGeneralRuleFunc;

    /**
     * @public
     * @class SegmentPositionNode
     * @augments Node
     */
    interface SegmentPositionNode extends Node {
        /**
         * @instance
         * @public
         * @memberof SegmentPositionNode
         * @type System.Collections.Generic.List$1
         */
        Values: System.Collections.Generic.List$1<number> | null;
        /**
         * @instance
         * @public
         * @memberof SegmentPositionNode
         * @type ElementPosition
         */
        ElementPosition: ElementPosition | null;
        /**
         * @instance
         * @public
         * @override
         * @this SegmentPositionNode
         * @memberof SegmentPositionNode
         * @return  {string}
         */
        toRuleString(): string | null;
        /**
         * @instance
         * @private
         * @this SegmentPositionNode
         * @memberof SegmentPositionNode
         * @return  {void}
         */
    }
    interface SegmentPositionNodeFunc extends Function {
        prototype: SegmentPositionNode;
        /**
         * @instance
         * @public
         * @this SegmentPositionNode
         * @memberof SegmentPositionNode
         * @param   {string}    text     
         * @param   {number}    depth
         * @return  {void}
         */
        new (text: string | null, depth: number): SegmentPositionNode;
    }
    declare var SegmentPositionNode: SegmentPositionNodeFunc;

    /**
     * Summary description for Loop.
     *
     * @public
     * @class Loop
     * @augments LightWeightLoop
     */
    interface Loop extends LightWeightLoop {
        /**
         * Gets or sets a value indicating whether [repetition indefinite].
         *
         * @instance
         * @public
         * @memberof Loop
         * @function RepetitionIndefinite
         * @type boolean
         */
        RepetitionIndefinite: boolean;
        /**
         * Gets or sets the tag.
         *
         * @instance
         * @public
         * @memberof Loop
         * @function Tag
         * @type System.Object
         */
        Tag: any | null;
        /**
         * Get/Set if this loop occurred in an EDI File:Rules Reader
         *
         * @instance
         * @public
         * @memberof Loop
         * @function Occurred
         * @type boolean
         */
        Occurred: boolean;
        /**
         * Get/Set the parent of this loop:Rules Reader
         *
         * @instance
         * @public
         * @memberof Loop
         * @function Parent$1
         * @type Loop
         */
        Parent$1: Loop | null;
        /**
         * Get/Set the usage requirements of this loop
         *
         * @instance
         * @public
         * @memberof Loop
         * @function Usage
         * @type Usage
         */
        Usage: Usage;
        /**
         * Get/Set a list of segments in this loop
         *
         * @instance
         * @public
         * @memberof Loop
         * @function Segments$1
         * @type System.Collections.Generic.List$1
         */
        Segments$1: System.Collections.Generic.List$1<DataSegment> | null;
        /**
         * Get/Set the description of this loop
         *
         * @instance
         * @public
         * @memberof Loop
         * @function Description
         * @type string
         */
        Description: string | null;
        /**
         * Get/Set the loops contained within this loop
         *
         * @instance
         * @public
         * @memberof Loop
         * @function Loops$1
         * @type System.Collections.Generic.List$1
         */
        Loops$1: System.Collections.Generic.List$1<Loop> | null;
        /**
         * Get/Set the minimum amount of times this loop can repeat
         *
         * @instance
         * @public
         * @memberof Loop
         * @function MinimumOccurrences
         * @type number
         */
        MinimumOccurrences: number;
        /**
         * Get/Set the maximum amount of times this loop can repeat
         *
         * @instance
         * @public
         * @memberof Loop
         * @function MaximumOccurrences
         * @type number
         */
        MaximumOccurrences: number;
        /**
         * Get the last segment in this loop
         *
         * @instance
         * @public
         * @readonly
         * @memberof Loop
         * @function LastSegment$1
         * @type DataSegment
         */
        LastSegment$1: DataSegment | null;
        /**
         * Get the first segment in this loop
         *
         * @instance
         * @public
         * @readonly
         * @memberof Loop
         * @function FirstSegment$1
         * @type DataSegment
         */
        FirstSegment$1: DataSegment | null;
        /**
         * Gets the last loop.
         *
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @return  {Loop}
         */
        getLastLoop$1(): Loop | null;
        /**
         * Gets the loop.
         *
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @param   {string}    loopName    Name of the loop.
         * @return  {Loop}
         */
        getLoop$1(loopName: string | null): Loop | null;
        /**
         * @instance
         * @this Loop
         * @memberof Loop
         * @param   {Loop}    loop
         * @return  {Loop}
         */
        /**
         * Gets the segment.
         *
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @param   {string}         segmentName    Name of the segment.
         * @return  {DataSegment}
         */
        getSegment$2(segmentName: string | null): DataSegment | null;
        /**
         * Gets the segment.
         *
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @param   {number}         segmentOridinalNumber    The segment oridinal number.
         * @return  {DataSegment}
         */
        getSegment$1(segmentOridinalNumber: number): DataSegment | null;
        /**
         * Gets the segment position.
         *
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @param   {DataSegment}    segment    The segment.
         * @return  {number}
         */
        getSegmentPosition(segment: DataSegment | null): number;
        /**
         * Gets the segment collection.
         *
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @param   {string}                               segmentName    Name of the segment.
         * @return  {System.Collections.Generic.List$1}
         */
        getSegments$2(segmentName: string | null): System.Collections.Generic.List$1<DataSegment> | null;
        /**
         * Gets a segment collection given an element position and value
         *
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @param   {string}                               segmentName        Name of the segment
         * @param   {number}                               elementPosition    Position of the element in the segment
         * @param   {string}                               elementValue       Value of the element to compare against
         * @return  {System.Collections.Generic.List$1}
         */
        getSegments$3(segmentName: string | null, elementPosition: number, elementValue: string | null): System.Collections.Generic.List$1<DataSegment> | null;
        /**
         * Gets the loop collection.
         *
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @param   {string}                               loopName    Name of the loop.
         * @return  {System.Collections.Generic.List$1}
         */
        getLoops$1(loopName: string | null): System.Collections.Generic.List$1<Loop> | null;
        /**
         * Gets the next segment.
         *
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @param   {number}         currentIndex    Index of the current.
         * @return  {DataSegment}
         */
        getNextSegment(currentIndex: number): DataSegment | null;
        /**
         * Determines whether this loop contains a segment.
         *
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @param   {string}     segmentName    Name of the segment.
         * @return  {boolean}                   <pre><code>true</code></pre> if the specified loop contains segment; otherwise, <pre><code>false</code></pre>.
         */
        containsSegment$1(segmentName: string | null): boolean;
        /**
         * Creates the segment.
         *
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @param   {string}         segmentName    Name of the segment.
         * @return  {DataSegment}
         */
        createSegment$1(segmentName: string | null): DataSegment | null;
        /**
         * Creates the segment.
         *
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @param   {string}         segmentName    Name of the segment.
         * @param   {number}         min            The min.
         * @param   {number}         max            The max.
         * @param   {Usage}          usage          The usage.
         * @param   {string}         description    The description.
         * @return  {DataSegment}
         */
        createSegment$2(segmentName: string | null, min: number, max: number, usage: Usage, description: string | null): DataSegment | null;
        /**
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @param   {string}         segmentName    
         * @param   {number}         min            
         * @param   {number}         max            
         * @param   {Usage}          usage          
         * @param   {string}         description
         * @return  {DataSegment}
         */
        createSegmentLoop(segmentName: string | null, min: number, max: number, usage: Usage, description: string | null): DataSegment | null;
        /**
         * Creates the loop.
         *
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @param   {string}    name    The name.
         * @return  {Loop}
         */
        createLoop$2(name: string | null): Loop | null;
        /**
         * Creates the loop.
         *
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @return  {Loop}
         */
        createLoop$1(): Loop | null;
        /**
         * Creates the loop.
         *
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @param   {string}    name           The name.
         * @param   {string}    description    The description.
         * @return  {Loop}
         */
        createLoop$3(name: string | null, description: string | null): Loop | null;
        /**
         * Gets the sibling above.
         *
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @return  {Loop}
         */
        getSiblingAbove(): Loop | null;
        /**
         * Gets the child position.
         *
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @param   {Loop}      childLoop    The child loop.
         * @return  {number}
         */
        getChildPosition(childLoop: Loop | null): number;
        /**
         * Returns a {@link } that represents this instance.
         *
         * @instance
         * @public
         * @override
         * @this Loop
         * @memberof Loop
         * @return  {string}        A {@link } that represents this instance.
         */
        toString(): string | null;
    }
    interface LoopFunc extends Function {
        prototype: Loop;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @return  {void}
         */
        new (): Loop;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @return  {void}
         */
        ctor: {
            new (): Loop
        };
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @param   {string}    name    The name of the new loop
         * @return  {void}
         */
        $ctor1: {
            new (name: string | null): Loop
        };
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this Loop
         * @memberof Loop
         * @param   {string}    name           The name.
         * @param   {string}    description    The description.
         * @return  {void}
         */
        $ctor2: {
            new (name: string | null, description: string | null): Loop
        };
    }
    declare var Loop: LoopFunc;

    /**
     * @public
     * @class LocalCode
     * @augments Node
     */
    interface LocalCode extends Node {
        /**
         * @instance
         * @public
         * @memberof LocalCode
         * @type System.Collections.Generic.HashSet$1
         */
        Values: System.Collections.Generic.HashSet$1<string> | null;
        /**
         * @instance
         * @public
         * @override
         * @this LocalCode
         * @memberof LocalCode
         * @return  {string}
         */
        toRuleString(): string | null;
        /**
         * @instance
         * @private
         * @this LocalCode
         * @memberof LocalCode
         * @return  {void}
         */
    }
    interface LocalCodeFunc extends Function {
        prototype: LocalCode;
        /**
         * @instance
         * @public
         * @this LocalCode
         * @memberof LocalCode
         * @param   {string}    text     
         * @param   {number}    depth
         * @return  {void}
         */
        new (text: string | null, depth: number): LocalCode;
    }
    declare var LocalCode: LocalCodeFunc;

    /**
     * @public
     * @class IntegerList
     * @augments Node
     */
    interface IntegerList extends Node {
        /**
         * @instance
         * @public
         * @memberof IntegerList
         * @type System.Collections.Generic.List$1
         */
        Values: System.Collections.Generic.List$1<number> | null;
        /**
         * @instance
         * @private
         * @this IntegerList
         * @memberof IntegerList
         * @return  {void}
         */
    }
    interface IntegerListFunc extends Function {
        prototype: IntegerList;
        /**
         * @instance
         * @public
         * @this IntegerList
         * @memberof IntegerList
         * @param   {string}    text     
         * @param   {number}    depth
         * @return  {void}
         */
        new (text: string | null, depth: number): IntegerList;
    }
    declare var IntegerList: IntegerListFunc;

    /**
     * @public
     * @class IndexerList
     * @augments Node
     */
    interface IndexerList extends Node {
        /**
         * @instance
         * @public
         * @memberof IndexerList
         * @type System.Collections.Generic.List$1
         */
        Values: System.Collections.Generic.List$1<number> | null;
        /**
         * @instance
         * @private
         * @this IndexerList
         * @memberof IndexerList
         * @return  {void}
         */
    }
    interface IndexerListFunc extends Function {
        prototype: IndexerList;
        /**
         * @instance
         * @public
         * @this IndexerList
         * @memberof IndexerList
         * @param   {string}    text     
         * @param   {number}    depth
         * @return  {void}
         */
        new (text: string | null, depth: number): IndexerList;
    }
    declare var IndexerList: IndexerListFunc;

    /**
     * @public
     * @class Indexer
     * @augments Node
     */
    interface Indexer extends Node {
        /**
         * @instance
         * @public
         * @memberof Indexer
         * @type number
         */
        Index: number;
        /**
         * @instance
         * @private
         * @this Indexer
         * @memberof Indexer
         * @return  {void}
         */
    }
    interface IndexerFunc extends Function {
        prototype: Indexer;
        /**
         * @instance
         * @public
         * @this Indexer
         * @memberof Indexer
         * @param   {string}    text     
         * @param   {number}    depth
         * @return  {void}
         */
        new (text: string | null, depth: number): Indexer;
    }
    declare var Indexer: IndexerFunc;

    /**
     * @public
     * @class IfStatement
     * @augments Node
     */
    interface IfStatement extends Node {
        /**
         * @instance
         * @public
         * @memberof IfStatement
         * @function Condition
         * @type Condition
         */
        Condition: Condition | null;
        /**
         * @instance
         * @public
         * @memberof IfStatement
         * @function False
         * @type Node
         */
        False: Node | null;
        /**
         * This will contain the true action of the if or elseif statement that evaulates to true
         *
         * @instance
         * @public
         * @memberof IfStatement
         * @function DerivedTrue
         * @type Node
         */
        DerivedTrue: Node | null;
        /**
         * @instance
         * @public
         * @readonly
         * @memberof IfStatement
         * @function ElseIfs
         * @type System.Collections.Generic.List$1
         */
        ElseIfs: System.Collections.Generic.List$1<ElseIfStatement> | null;
        /**
         * @instance
         * @public
         * @this IfStatement
         * @memberof IfStatement
         * @param   {EDIValidator}              validator        
         * @param   {FoundSegmentCollection}    foundSegments    
         * @param   {SegmentPositionNode}       sp
         * @return  {boolean}
         */
        evaluate(validator: EDIValidator | null, foundSegments: FoundSegmentCollection | null, sp?: SegmentPositionNode | null): boolean;
        /**
         * @instance
         * @public
         * @this IfStatement
         * @memberof IfStatement
         * @param   {EDIValidator}                               validator        
         * @param   {System.Collections.Generic.Dictionary$2}    foundElements
         * @return  {boolean}
         */
        evaluate$1(validator: EDIValidator | null, foundElements: System.Collections.Generic.Dictionary$2<number,string> | null): boolean;
        /**
         * @instance
         * @private
         * @this IfStatement
         * @memberof IfStatement
         * @return  {string}
         */
        /**
         * @instance
         * @public
         * @override
         * @this IfStatement
         * @memberof IfStatement
         * @return  {string}
         */
        toRuleString(): string | null;
        /**
         * @instance
         * @private
         * @this IfStatement
         * @memberof IfStatement
         * @return  {void}
         */
    }
    interface IfStatementFunc extends Function {
        prototype: IfStatement;
        /**
         * @instance
         * @public
         * @this IfStatement
         * @memberof IfStatement
         * @param   {string}    text     
         * @param   {number}    depth
         * @return  {void}
         */
        new (text: string | null, depth: number): IfStatement;
    }
    declare var IfStatement: IfStatementFunc;

    /**
     * @public
     * @class GeneralSelfRule
     * @augments Node
     */
    interface GeneralSelfRule extends Node {
        /**
         * @instance
         * @public
         * @memberof GeneralSelfRule
         * @function Symbol
         * @type string
         */
        Symbol: string | null;
        /**
         * @instance
         * @public
         * @memberof GeneralSelfRule
         * @function IfStatement
         * @type IfStatement
         */
        IfStatement: IfStatement | null;
        /**
         * @instance
         * @private
         * @this GeneralSelfRule
         * @memberof GeneralSelfRule
         * @return  {void}
         */
        /**
         * @instance
         * @public
         * @override
         * @this GeneralSelfRule
         * @memberof GeneralSelfRule
         * @return  {string}
         */
        toRuleString(): string | null;
    }
    interface GeneralSelfRuleFunc extends Function {
        prototype: GeneralSelfRule;
        /**
         * @instance
         * @public
         * @this GeneralSelfRule
         * @memberof GeneralSelfRule
         * @param   {string}    text     
         * @param   {number}    depth
         * @return  {void}
         */
        new (text: string | null, depth: number): GeneralSelfRule;
    }
    declare var GeneralSelfRule: GeneralSelfRuleFunc;

    /**
     * @public
     * @class GeneralRule
     * @augments Node
     */
    interface GeneralRule extends Node {
        /**
         * @instance
         * @public
         * @memberof GeneralRule
         * @function DepSegmentPositionNode
         * @type SegmentPositionNode
         */
        DepSegmentPositionNode: SegmentPositionNode | null;
        /**
         * @instance
         * @public
         * @memberof GeneralRule
         * @function IfStatement
         * @type IfStatement
         */
        IfStatement: IfStatement | null;
        /**
         * @instance
         * @private
         * @this GeneralRule
         * @memberof GeneralRule
         * @return  {void}
         */
        /**
         * @instance
         * @public
         * @override
         * @this GeneralRule
         * @memberof GeneralRule
         * @return  {string}
         */
        toRuleString(): string | null;
    }
    interface GeneralRuleFunc extends Function {
        prototype: GeneralRule;
        /**
         * @instance
         * @public
         * @this GeneralRule
         * @memberof GeneralRule
         * @param   {string}    text     
         * @param   {number}    depth
         * @return  {void}
         */
        new (text: string | null, depth: number): GeneralRule;
    }
    declare var GeneralRule: GeneralRuleFunc;

    /**
     * @public
     * @class FoundSegmentCollection
     * @augments System.Collections.Generic.List$1
     */
    interface FoundSegmentCollection extends System.Collections.Generic.List$1<LightWeightSegment> {
        /**
         * @instance
         * @public
         * @this FoundSegmentCollection
         * @memberof FoundSegmentCollection
         * @param   {number}                segmentOrdinalNumber
         * @return  {LightWeightSegment}
         */
        getLastOccurrence(segmentOrdinalNumber: number): LightWeightSegment | null;
        /**
         * @instance
         * @public
         * @this FoundSegmentCollection
         * @memberof FoundSegmentCollection
         * @return  {LightWeightSegment}
         */
        getLastDataSegment(): LightWeightSegment | null;
        /**
         * @instance
         * @public
         * @this FoundSegmentCollection
         * @memberof FoundSegmentCollection
         * @param   {number}    segmentOrdinalNumber
         * @return  {void}
         */
        removeSegment(segmentOrdinalNumber: number): void;
        /**
         * @instance
         * @public
         * @this FoundSegmentCollection
         * @memberof FoundSegmentCollection
         * @param   {number}    segmentOrdinalNumber
         * @return  {void}
         */
        removeHLSegment(segmentOrdinalNumber: number): void;
        /**
         * @instance
         * @public
         * @this FoundSegmentCollection
         * @memberof FoundSegmentCollection
         * @param   {DataSegment}    previousSegment
         * @return  {number}
         */
        countOccurrancesOfPreviousSegment(previousSegment: DataSegment | null): number;
    }
    interface FoundSegmentCollectionFunc extends Function {
        prototype: FoundSegmentCollection;
        new (): FoundSegmentCollection;
    }
    declare var FoundSegmentCollection: FoundSegmentCollectionFunc;

    /**
     * @public
     * @class ErrorNode
     * @augments Node
     */
    interface ErrorNode extends Node {
        /**
         * @instance
         * @public
         * @memberof ErrorNode
         * @function MessageString
         * @type string
         */
        MessageString: string | null;
        /**
         * @instance
         * @public
         * @memberof ErrorNode
         * @function EDIMessage
         * @type EDIValidationMessage
         */
        EDIMessage: EDIValidationMessage;
        /**
         * @instance
         * @public
         * @override
         * @this ErrorNode
         * @memberof ErrorNode
         * @return  {string}
         */
        toRuleString(): string | null;
        /**
         * @instance
         * @private
         * @this ErrorNode
         * @memberof ErrorNode
         * @return  {void}
         */
    }
    interface ErrorNodeFunc extends Function {
        prototype: ErrorNode;
        /**
         * @instance
         * @public
         * @this ErrorNode
         * @memberof ErrorNode
         * @param   {string}    text     
         * @param   {number}    depth
         * @return  {void}
         */
        new (text: string | null, depth: number): ErrorNode;
    }
    declare var ErrorNode: ErrorNodeFunc;

    /**
     * @public
     * @class ElseIfStatement
     * @augments Node
     */
    interface ElseIfStatement extends Node {
        /**
         * @instance
         * @public
         * @memberof ElseIfStatement
         * @function Condition
         * @type Condition
         */
        Condition: Condition | null;
        /**
         * @instance
         * @public
         * @memberof ElseIfStatement
         * @function True
         * @type Node
         */
        True: Node | null;
        /**
         * @instance
         * @public
         * @memberof ElseIfStatement
         * @function False
         * @type Node
         */
        False: Node | null;
        /**
         * @instance
         * @public
         * @this ElseIfStatement
         * @memberof ElseIfStatement
         * @param   {EDIValidator}              validator        
         * @param   {FoundSegmentCollection}    foundSegments    
         * @param   {SegmentPositionNode}       sp
         * @return  {boolean}
         */
        evaluate(validator: EDIValidator | null, foundSegments: FoundSegmentCollection | null, sp?: SegmentPositionNode | null): boolean;
        /**
         * @instance
         * @public
         * @this ElseIfStatement
         * @memberof ElseIfStatement
         * @param   {EDIValidator}                               validator        
         * @param   {System.Collections.Generic.Dictionary$2}    foundElements
         * @return  {boolean}
         */
        evaluate$1(validator: EDIValidator | null, foundElements: System.Collections.Generic.Dictionary$2<number,string> | null): boolean;
        /**
         * @instance
         * @public
         * @override
         * @this ElseIfStatement
         * @memberof ElseIfStatement
         * @return  {string}
         */
        toRuleString(): string | null;
        /**
         * @instance
         * @private
         * @this ElseIfStatement
         * @memberof ElseIfStatement
         * @return  {void}
         */
    }
    interface ElseIfStatementFunc extends Function {
        prototype: ElseIfStatement;
        /**
         * @instance
         * @public
         * @this ElseIfStatement
         * @memberof ElseIfStatement
         * @param   {string}    text     
         * @param   {number}    depth
         * @return  {void}
         */
        new (text: string | null, depth: number): ElseIfStatement;
    }
    declare var ElseIfStatement: ElseIfStatementFunc;

    /**
     * Represents a required constraint for a segment
     *
     * @public
     * @class ElementRequiredConstraint
     * @augments ElementPairConstraint
     */
    interface ElementRequiredConstraint extends ElementPairConstraint {
    }
    interface ElementRequiredConstraintFunc extends Function {
        prototype: ElementRequiredConstraint;
        new (): ElementRequiredConstraint;
    }
    declare var ElementRequiredConstraint: ElementRequiredConstraintFunc;

    /**
     * @public
     * @class ElementPositionNode
     * @augments Node
     */
    interface ElementPositionNode extends Node {
        /**
         * @instance
         * @public
         * @memberof ElementPositionNode
         * @type number
         */
        Index: number;
        /**
         * @instance
         * @public
         * @override
         * @this ElementPositionNode
         * @memberof ElementPositionNode
         * @return  {string}
         */
        toRuleString(): string | null;
        /**
         * @instance
         * @private
         * @this ElementPositionNode
         * @memberof ElementPositionNode
         * @return  {void}
         */
    }
    interface ElementPositionNodeFunc extends Function {
        prototype: ElementPositionNode;
        /**
         * @instance
         * @public
         * @this ElementPositionNode
         * @memberof ElementPositionNode
         * @param   {string}    text     
         * @param   {number}    depth
         * @return  {void}
         */
        new (text: string | null, depth: number): ElementPositionNode;
    }
    declare var ElementPositionNode: ElementPositionNodeFunc;

    /**
     * @public
     * @class ElementListNode
     * @augments Node
     */
    interface ElementListNode extends Node {
        /**
         * @instance
         * @public
         * @memberof ElementListNode
         * @type System.Collections.Generic.List$1
         */
        Values: System.Collections.Generic.List$1<number> | null;
        /**
         * @instance
         * @public
         * @override
         * @this ElementListNode
         * @memberof ElementListNode
         * @return  {string}
         */
        toRuleString(): string | null;
        /**
         * @instance
         * @private
         * @this ElementListNode
         * @memberof ElementListNode
         * @return  {void}
         */
    }
    interface ElementListNodeFunc extends Function {
        prototype: ElementListNode;
        /**
         * @instance
         * @public
         * @this ElementListNode
         * @memberof ElementListNode
         * @param   {string}    text     
         * @param   {number}    depth
         * @return  {void}
         */
        new (text: string | null, depth: number): ElementListNode;
    }
    declare var ElementListNode: ElementListNodeFunc;

    /**
     * Represents a list conditional contraints
     *
     * @public
     * @class ElementListConditionalConstraint
     * @augments ElementPairConstraint
     */
    interface ElementListConditionalConstraint extends ElementPairConstraint {
    }
    interface ElementListConditionalConstraintFunc extends Function {
        prototype: ElementListConditionalConstraint;
        new (): ElementListConditionalConstraint;
    }
    declare var ElementListConditionalConstraint: ElementListConditionalConstraintFunc;

    /**
     * Object that holds a exclusiong constraint for a segment
     *
     * @public
     * @class ElementExclusionConstraint
     * @augments ElementPairConstraint
     */
    interface ElementExclusionConstraint extends ElementPairConstraint {
    }
    interface ElementExclusionConstraintFunc extends Function {
        prototype: ElementExclusionConstraint;
        new (): ElementExclusionConstraint;
    }
    declare var ElementExclusionConstraint: ElementExclusionConstraintFunc;

    /**
     * Represents a conditional constraint for a segment
     *
     * @public
     * @class ElementConditionalConstraint
     * @augments ElementPairConstraint
     */
    interface ElementConditionalConstraint extends ElementPairConstraint {
    }
    interface ElementConditionalConstraintFunc extends Function {
        prototype: ElementConditionalConstraint;
        new (): ElementConditionalConstraint;
    }
    declare var ElementConditionalConstraint: ElementConditionalConstraintFunc;

    /**
     * Represents a general EDI warning.  Warnings are available after validation
     *
     * @public
     * @class EDIWarning
     * @augments EDIError
     */
    interface EDIWarning extends EDIError {
    }
    interface EDIWarningFunc extends Function {
        prototype: EDIWarning;
        /**
         * @instance
         * @public
         * @this EDIWarning
         * @memberof EDIWarning
         * @return  {void}
         */
        new (): EDIWarning;
        /**
         * @instance
         * @public
         * @this EDIWarning
         * @memberof EDIWarning
         * @return  {void}
         */
        ctor: {
            new (): EDIWarning
        };
        /**
         * @instance
         * @public
         * @this EDIWarning
         * @memberof EDIWarning
         * @param   {number}                  lineNumber             
         * @param   {string}                  loop                   
         * @param   {string}                  segment                
         * @param   {number}                  elementOrdinal         
         * @param   {number}                  compositeElementOrd    
         * @param   {EDIValidationMessage}    message                
         * @param   {string}                  description            
         * @param   {LightWeightSegment}      currentSTSegment       
         * @param   {LightWeightSegment}      currentGSSegment       
         * @param   {string}                  position               
         * @param   {number}                  segmentPosition        
         * @param   {DataSegment}             schemaSeg
         * @return  {void}
         */
        $ctor1: {
            new (lineNumber: number, loop: string | null, segment: string | null, elementOrdinal: number, compositeElementOrd: number, message: EDIValidationMessage, description: string | null, currentSTSegment: LightWeightSegment | null, currentGSSegment: LightWeightSegment | null, position: string | null, segmentPosition: number, schemaSeg: DataSegment | null): EDIWarning
        };
    }
    declare var EDIWarning: EDIWarningFunc;

    /**
     * For reading and creating EDIFACT segments
     *
     * @class EDIFACTSegmentGetter
     * @augments X12SegmentGetterFromString
     */
    interface EDIFACTSegmentGetter extends X12SegmentGetterFromString {
        /**
         * @instance
         * @public
         * @override
         * @this EDIFACTSegmentGetter
         * @memberof EDIFACTSegmentGetter
         * @return  {LightWeightSegment}
         */
        getNextSegment(): LightWeightSegment | null;
        /**
         * @instance
         * @private
         * @this EDIFACTSegmentGetter
         * @memberof EDIFACTSegmentGetter
         * @return  {string}
         */
        /**
         * @instance
         * @protected
         * @override
         * @this EDIFACTSegmentGetter
         * @memberof EDIFACTSegmentGetter
         * @param   {LightWeightSegment}    seg
         * @return  {void}
         */
    }
    interface EDIFACTSegmentGetterFunc extends Function {
        prototype: EDIFACTSegmentGetter;
        /**
         * @instance
         * @public
         * @this EDIFACTSegmentGetter
         * @memberof EDIFACTSegmentGetter
         * @param   {EDIValidator}    validator
         * @return  {void}
         */
        new (validator: EDIValidator | null): EDIFACTSegmentGetter;
    }
    declare var EDIFACTSegmentGetter: EDIFACTSegmentGetterFunc;

    /**
     * A DataSegment Object
     *
     * @public
     * @class DataSegment
     * @augments LightWeightSegment
     */
    interface DataSegment extends LightWeightSegment {
        /**
         * Get/Set if this is the only segment in a loop
         *
         * @instance
         * @public
         * @memberof DataSegment
         * @function OnlySegmentInLoop
         * @type boolean
         */
        OnlySegmentInLoop: boolean;
        /**
         * Get/Set if this segment repeats indefinitely
         *
         * @instance
         * @public
         * @memberof DataSegment
         * @function RepeatIndefinite
         * @type boolean
         */
        RepeatIndefinite: boolean;
        /**
         * @instance
         * @public
         * @memberof DataSegment
         * @function SegmentLoop$1
         * @type Loop
         */
        SegmentLoop$1: Loop | null;
        /**
         * Gets or sets the index of the loop validation. Default is 0
         *
         * @instance
         * @public
         * @memberof DataSegment
         * @function LoopValidationIndex
         * @type number
         */
        LoopValidationIndex: number;
        /**
         * For Rules Reader
         *
         * @instance
         * @public
         * @memberof DataSegment
         * @function MaskNumber
         * @type number
         */
        MaskNumber: number;
        /**
         * Get/Set the self rules for this segment
         *
         * @instance
         * @public
         * @memberof DataSegment
         * @function SelfRules
         * @type System.Collections.Generic.List$1
         */
        SelfRules: System.Collections.Generic.List$1<SelfRule> | null;
        /**
         * Get/Set the rules for this segment
         *
         * @instance
         * @public
         * @memberof DataSegment
         * @function Rules
         * @type System.Collections.Generic.List$1
         */
        Rules: System.Collections.Generic.List$1<SemanticRule> | null;
        /**
         * @instance
         * @public
         * @memberof DataSegment
         * @function GeneralRules
         * @type System.Collections.Generic.List$1
         */
        GeneralRules: System.Collections.Generic.List$1<GeneralRule> | null;
        /**
         * @instance
         * @public
         * @memberof DataSegment
         * @function GeneralSelfRules
         * @type System.Collections.Generic.List$1
         */
        GeneralSelfRules: System.Collections.Generic.List$1<GeneralSelfRule> | null;
        /**
         * Use this to store any id necessary
         *
         * @instance
         * @public
         * @memberof DataSegment
         * @function SegmentID
         * @type string
         */
        SegmentID: string | null;
        /**
         * Gets or sets the position.
         *
         * @instance
         * @public
         * @memberof DataSegment
         * @function Position
         * @type string
         */
        Position: string | null;
        /**
         * Get/Set the usage requirements of segment
         *
         * @instance
         * @public
         * @memberof DataSegment
         * @function Usage
         * @type Usage
         */
        Usage: Usage;
        /**
         * Element Exclusion Constraints List
         *
         * @instance
         * @public
         * @memberof DataSegment
         * @function ElementExclusionConstraints
         * @type System.Collections.Generic.List$1
         */
        ElementExclusionConstraints: System.Collections.Generic.List$1<ElementExclusionConstraint> | null;
        /**
         * Element Pair Constraints List
         *
         * @instance
         * @public
         * @memberof DataSegment
         * @function ElementPairConstraints
         * @type System.Collections.Generic.List$1
         */
        ElementPairConstraints: System.Collections.Generic.List$1<ElementPairConstraint> | null;
        /**
         * Element Required Constraints List
         *
         * @instance
         * @public
         * @memberof DataSegment
         * @function ElementRequiredConstraint
         * @type System.Collections.Generic.List$1
         */
        ElementRequiredConstraint: System.Collections.Generic.List$1<ElementRequiredConstraint> | null;
        /**
         * Element Conditional Constraints List
         *
         * @instance
         * @public
         * @memberof DataSegment
         * @function ElementConditionalConstraints
         * @type System.Collections.Generic.List$1
         */
        ElementConditionalConstraints: System.Collections.Generic.List$1<ElementConditionalConstraint> | null;
        /**
         * Element List Condition Constraints List
         *
         * @instance
         * @public
         * @memberof DataSegment
         * @function ElementListConditionConstraints
         * @type System.Collections.Generic.List$1
         */
        ElementListConditionConstraints: System.Collections.Generic.List$1<ElementListConditionalConstraint> | null;
        /**
         * Get/Set the minimum amount of times this segment can repeat
         *
         * @instance
         * @public
         * @memberof DataSegment
         * @function MinimumOccurrences
         * @type number
         */
        MinimumOccurrences: number;
        /**
         * Get/Set the maximum amount of times this segment can repeat
         *
         * @instance
         * @public
         * @memberof DataSegment
         * @function MaximumOccurrences
         * @type number
         */
        MaximumOccurrences: number;
        /**
         * Used for any purpose
         *
         * @instance
         * @public
         * @memberof DataSegment
         * @function Tag
         * @type System.Object
         */
        Tag: any | null;
        /**
         * Get/Set the name of the loop that this segment belongs to
         *
         * @instance
         * @public
         * @memberof DataSegment
         * @function OwningLoop
         * @type string
         */
        OwningLoop: string | null;
        /**
         * Get/Set the description for this segment
         *
         * @instance
         * @public
         * @memberof DataSegment
         * @function Description
         * @type string
         */
        Description: string | null;
        /**
         * Get/Set a list of DataElements
         *
         * @instance
         * @public
         * @memberof DataSegment
         * @function Elements$1
         * @type DataElements
         */
        Elements$1: DataElements | null;
        /**
         * Returns the last data element in this segment
         *
         * @instance
         * @public
         * @readonly
         * @memberof DataSegment
         * @function LastElement$1
         * @type DataElement
         */
        LastElement$1: DataElement | null;
        /**
         * Returns the first data element in this segment
         *
         * @instance
         * @public
         * @readonly
         * @memberof DataSegment
         * @function FirstElement$1
         * @type DataElement
         */
        FirstElement$1: DataElement | null;
        /**
         * @instance
         * @this DataSegment
         * @memberof DataSegment
         * @param   {ElementPosition}    elementPosition
         * @return  {void}
         */
        /**
         * Creates and add a default DataElement to this DataSegment
         *
         * @instance
         * @public
         * @this DataSegment
         * @memberof DataSegment
         * @param   {boolean}        composite    specifies whether DataElement should be a composite
         * @return  {DataElement}
         */
        createDataElement(composite: boolean): DataElement | null;
        /**
         * Checks whether an element exist in the segment
         *
         * @instance
         * @public
         * @override
         * @this DataSegment
         * @memberof DataSegment
         * @param   {number}     elementIndex    index of the element
         * @return  {boolean}                    true if element exists, false otherwise
         */
        containsElement(elementIndex: number): boolean;
        /**
         * Use PopulateElements(params string[] elementValues) instead
         *
         * @instance
         * @public
         * @this DataSegment
         * @memberof DataSegment
         * @param   {Array.<string>}    elementValues    data values for the new DataElements
         * @return  {void}
         */
        populate(elementValues: string[] | null): void;
        /**
         * Populates the DataElements of this DataSegment from a params array
         *
         * @instance
         * @public
         * @this DataSegment
         * @memberof DataSegment
         * @param   {Array.<string>}    elementValues    data values for the new DataElements
         * @return  {void}
         */
        populateElements(elementValues: string[] | null): void;
        /**
         * Returns whether this DataSegment has any contraints
         *
         * @instance
         * @public
         * @this DataSegment
         * @memberof DataSegment
         * @return  {boolean}        true if contraints exist, false otherwise
         */
        hasElementPairConstraints(): boolean;
        /**
         * Returns a string representation of this DataSegment
         *
         * @instance
         * @public
         * @override
         * @this DataSegment
         * @memberof DataSegment
         * @return  {string}        string representation of this DataSegment
         */
        toString(): string | null;
    }
    interface DataSegmentFunc extends Function {
        prototype: DataSegment;
        /**
         * Creates a new DataSegment
         *
         * @instance
         * @public
         * @this DataSegment
         * @memberof DataSegment
         * @param   {string}    segmentName    name
         * @param   {string}    description    description for segment
         * @return  {void}
         */
        $ctor2: {
            new (segmentName: string | null, description: string | null): DataSegment
        };
        /**
         * Creates a new DataSegment
         *
         * @instance
         * @public
         * @this DataSegment
         * @memberof DataSegment
         * @param   {string}    segmentName    segment name
         * @param   {number}    min            minimum amount of time segment should repeat
         * @param   {number}    max            maximum amount of time segment should repeat
         * @param   {Usage}     usage          usage for segment
         * @param   {string}    description    description for segment
         * @return  {void}
         */
        $ctor1: {
            new (segmentName: string | null, min: number, max: number, usage: Usage, description: string | null): DataSegment
        };
        /**
         * Creates a new DataSegment
         *
         * @instance
         * @public
         * @this DataSegment
         * @memberof DataSegment
         * @param   {string}    segmentName    segment name
         * @return  {void}
         */
        ctor: {
            new (segmentName: string | null): DataSegment
        };
    }
    declare var DataSegment: DataSegmentFunc;

    /**
     * A DataElement Object
     *
     * @public
     * @class DataElement
     * @augments LightWeightElement
     */
    interface DataElement extends LightWeightElement {
        /**
         * Get/Set the name of DataElement
         *
         * @instance
         * @public
         * @memberof DataElement
         * @function Name
         * @type string
         */
        Name: string | null;
        /**
         * Get/Set whether this element uses an external code list, code list name starts with 'CodeSet'
         *
         * @instance
         * @public
         * @memberof DataElement
         * @function HasCodeSetCodeList
         * @type boolean
         */
        HasCodeSetCodeList: boolean;
        /**
         * Get/Set element formats for this DataElement
         *
         * @instance
         * @public
         * @memberof DataElement
         * @function FormatCollection
         * @type System.Collections.Generic.List$1
         */
        FormatCollection: System.Collections.Generic.List$1<ElementFormat> | null;
        /**
         * Get/Set codelist for this DataElement
         *
         * @instance
         * @public
         * @memberof DataElement
         * @function CodeList
         * @type CodeList
         */
        CodeList: CodeList | null;
        /**
         * Get/Set accepted values for this DataElement
         *
         * @instance
         * @public
         * @memberof DataElement
         * @function AcceptedValues
         * @type System.Collections.Generic.HashSet$1
         */
        AcceptedValues: System.Collections.Generic.HashSet$1<string> | null;
        /**
         * Get/Set codes for this DataElement
         *
         * @instance
         * @public
         * @memberof DataElement
         * @function Codes
         * @type System.Collections.Generic.Dictionary$2
         */
        Codes: System.Collections.Generic.Dictionary$2<string,string> | null;
        /**
         * Get/Set whether everytime this DataElement repeats a new value must be present
         *
         * @instance
         * @public
         * @memberof DataElement
         * @function UniqueValueOnRepetition
         * @type boolean
         */
        UniqueValueOnRepetition: boolean;
        /**
         * Get/Set the padding character used to meet maximum lengths
         *
         * @instance
         * @public
         * @memberof DataElement
         * @function PaddingCharacter
         * @type number
         */
        PaddingCharacter: number;
        /**
         * Get/Set the type of data
         *
         * @instance
         * @public
         * @memberof DataElement
         * @function DataType
         * @type ElementDataType
         */
        DataType: ElementDataType;
        /**
         * Get/Set the description
         *
         * @instance
         * @public
         * @memberof DataElement
         * @function Description
         * @type string
         */
        Description: string | null;
        /**
         * Used for any reason at all
         *
         * @instance
         * @public
         * @memberof DataElement
         * @function Tag
         * @type System.Object
         */
        Tag: any | null;
        /**
         * Returns the usage of this dataelement
         *
         * @instance
         * @public
         * @memberof DataElement
         * @function Usage
         * @type Usage
         */
        Usage: Usage;
        /**
         * Get/Set the child elements if this is a composite data element
         *
         * @instance
         * @public
         * @memberof DataElement
         * @function Elements$1
         * @type DataElements
         */
        Elements$1: DataElements | null;
        /**
         * Get/Set the minimum length of the data value
         *
         * @instance
         * @public
         * @memberof DataElement
         * @function MinimumLength
         * @type number
         */
        MinimumLength: number;
        /**
         * Get/Set the maximum length of the data value
         *
         * @instance
         * @public
         * @memberof DataElement
         * @function MaximumLength
         * @type number
         */
        MaximumLength: number;
        /**
         * Get/Set the name of the codelist that DataElement must get its values
         from
         *
         * @instance
         * @public
         * @memberof DataElement
         * @function CodeListName
         * @type string
         */
        CodeListName: string | null;
        /**
         * @instance
         * @this DataElement
         * @memberof DataElement
         * @param   {ElementPosition}    elementPosition
         * @return  {void}
         */
        /**
         * Checks whether the supplied paramater value exists in the DataElement's accepted values list
         *
         * @instance
         * @public
         * @this DataElement
         * @memberof DataElement
         * @param   {string}     value    value to check
         * @return  {boolean}             true if the value exists, false otherwise
         */
        inAcceptedValues(value: string | null): boolean;
        /**
         * Checks whether this data element has a list of accepted values
         *
         * @instance
         * @public
         * @this DataElement
         * @memberof DataElement
         * @return  {boolean}        true if a list exists, false otherwise
         */
        hasAcceptedValues(): boolean;
        /**
         * @instance
         * @this DataElement
         * @memberof DataElement
         * @param   {string}     value
         * @return  {boolean}
         */
        /**
         * Returns a list of accepted values for this data element
         *
         * @instance
         * @public
         * @this DataElement
         * @memberof DataElement
         * @return  {string}        list of accepted values separated by a comma
         */
        getAcceptedValues(): string | null;
    }
    interface DataElementFunc extends Function {
        prototype: DataElement;
        /**
         * Creates a new DataElement object
         *
         * @instance
         * @public
         * @this DataElement
         * @memberof DataElement
         * @return  {void}
         */
        new (): DataElement;
        /**
         * Creates a new DataElement object
         *
         * @instance
         * @public
         * @this DataElement
         * @memberof DataElement
         * @return  {void}
         */
        ctor: {
            new (): DataElement
        };
        /**
         * Creates a new DataElement object
         *
         * @instance
         * @public
         * @this DataElement
         * @memberof DataElement
         * @param   {string}    dataValue      value of DataElement
         * @param   {string}    description    description of DataElement
         * @return  {void}
         */
        $ctor13: {
            new (dataValue: string | null, description: string | null): DataElement
        };
        /**
         * Creates a new DataElement object
         *
         * @instance
         * @public
         * @this DataElement
         * @memberof DataElement
         * @param   {string}    dataValue        value of DataElement
         * @param   {number}    elementNumber    position of DataElement in the containing DataSegment
         * @return  {void}
         */
        $ctor7: {
            new (dataValue: string | null, elementNumber: number): DataElement
        };
        /**
         * Creates a new DataElement object
         *
         * @instance
         * @public
         * @this DataElement
         * @memberof DataElement
         * @param   {number}    elementNumber    position of DataElement in the containing DataSegment
         * @param   {number}    min              minimum length of data value
         * @param   {number}    max              maximum length of data value
         * @return  {void}
         */
        $ctor3: {
            new (elementNumber: number, min: number, max: number): DataElement
        };
        /**
         * Creates a new DataElement object
         *
         * @instance
         * @public
         * @this DataElement
         * @memberof DataElement
         * @param   {number}    elementNumber    position of DataElement in the containing DataSegment
         * @return  {void}
         */
        $ctor2: {
            new (elementNumber: number): DataElement
        };
        /**
         * Creates a new DataElement object
         *
         * @instance
         * @public
         * @this DataElement
         * @memberof DataElement
         * @param   {string}    name         name of DataElement
         * @param   {string}    dataValue    value of DataElement
         * @param   {number}    min          minimum length of data value
         * @param   {number}    max          maximum length of data value
         * @return  {void}
         */
        $ctor14: {
            new (name: string | null, dataValue: string | null, min: number, max: number): DataElement
        };
        /**
         * Creates a new DataElement object
         *
         * @instance
         * @public
         * @this DataElement
         * @memberof DataElement
         * @param   {string}    dataValue    value of DataElement
         * @param   {number}    min          minimum length of data value
         * @param   {number}    max          maximum length of data value
         * @return  {void}
         */
        $ctor8: {
            new (dataValue: string | null, min: number, max: number): DataElement
        };
        /**
         * Creates a new DataElement object
         *
         * @instance
         * @public
         * @this DataElement
         * @memberof DataElement
         * @param   {string}            elementName                name of DataElement
         * @param   {number}            elementNumber              position of DataElement in the containing DataSegment
         * @param   {Usage}             usage                      usage of DataElement
         * @param   {boolean}           uniqueValueOnRepetition    if true then everytime this DataElement repeats a new value must be present
         * @param   {Array.<string>}    acceptedValues             accepted values of DataElement
         * @return  {void}
         */
        $ctor11: {
            new (elementName: string | null, elementNumber: number, usage: Usage, uniqueValueOnRepetition: boolean, acceptedValues: string[] | null): DataElement
        };
        /**
         * Creates a new DataElement object
         *
         * @instance
         * @public
         * @this DataElement
         * @memberof DataElement
         * @param   {string}            elementName       name of DataElement
         * @param   {number}            elementNumber     position of DataElement in the containing DataSegment
         * @param   {Usage}             usage             usage of DataElement
         * @param   {Array.<string>}    acceptedValues    accepted values of DataElement
         * @return  {void}
         */
        $ctor12: {
            new (elementName: string | null, elementNumber: number, usage: Usage, acceptedValues: string[] | null): DataElement
        };
        /**
         * Creates a new DataElement object
         *
         * @instance
         * @public
         * @this DataElement
         * @memberof DataElement
         * @param   {string}    dataValue        value of DataElement
         * @param   {number}    elementNumber    position of DataElement in the containing DataSegment
         * @param   {string}    description      description of DataElement
         * @return  {void}
         */
        $ctor9: {
            new (dataValue: string | null, elementNumber: number, description: string | null): DataElement
        };
        /**
         * Creates a new DataElement object
         *
         * @instance
         * @public
         * @this DataElement
         * @memberof DataElement
         * @param   {string}    dataValue        value of DataElement
         * @param   {number}    elementNumber    position of DataElement in the containing DataSegment
         * @param   {string}    description      description of DataElement
         * @param   {number}    minLength        minimum length of data value
         * @param   {number}    maxLength        maximum length of data value
         * @return  {void}
         */
        $ctor10: {
            new (dataValue: string | null, elementNumber: number, description: string | null, minLength: number, maxLength: number): DataElement
        };
        /**
         * Creates a new DataElement object
         *
         * @instance
         * @public
         * @this DataElement
         * @memberof DataElement
         * @param   {string}    dataValue    value of DataElement
         * @return  {void}
         */
        $ctor4: {
            new (dataValue: string | null): DataElement
        };
        /**
         * Creates a new DataElement object
         *
         * @instance
         * @public
         * @this DataElement
         * @memberof DataElement
         * @param   {string}             name        name of DataElement
         * @param   {ElementDataType}    dataType    type of data stored in this DataElement
         * @return  {void}
         */
        $ctor5: {
            new (name: string | null, dataType: ElementDataType): DataElement
        };
        /**
         * Creates a new DataElement object
         *
         * @instance
         * @public
         * @this DataElement
         * @memberof DataElement
         * @param   {boolean}    composite    true if this is a composite dataelement, false otherwise
         * @return  {void}
         */
        $ctor1: {
            new (composite: boolean): DataElement
        };
        /**
         * Creates a new DataElement object
         *
         * @instance
         * @public
         * @this DataElement
         * @memberof DataElement
         * @param   {string}             name         name of the DataElement
         * @param   {ElementDataType}    dataType     type of data stored in this DataElement
         * @param   {string}             dataValue    value of the DataElement
         * @return  {void}
         */
        $ctor6: {
            new (name: string | null, dataType: ElementDataType, dataValue: string | null): DataElement
        };
        /**
         * Overides the asignment operator to directly convert a string to a DataElement
         *
         * @static
         * @public
         * @this DataElement
         * @memberof DataElement
         * @param   {string}         elementValue    string to convert to a DataElement
         * @return  {DataElement}                    a new DataElement with the supplied value
         */
        op_Implicit(elementValue: string): DataElement;
    }
    declare var DataElement: DataElementFunc;

    /**
     * @public
     * @class Condition
     * @augments Node
     */
    interface Condition extends Node {
        /**
         * @instance
         * @public
         * @memberof Condition
         * @type System.Collections.Generic.List$1
         */
        operands: System.Collections.Generic.List$1<Condition> | null;
        /**
         * @instance
         * @public
         * @memberof Condition
         * @type System.Collections.Generic.List$1
         */
        operators: System.Collections.Generic.List$1<string> | null;
        /**
         * @instance
         * @public
         * @memberof Condition
         * @function Operator
         * @type RuleOperator
         */
        Operator: RuleOperator;
        /**
         * @instance
         * @public
         * @memberof Condition
         * @function CodeCondition
         * @type CodeCondition
         */
        CodeCondition: CodeCondition | null;
        /**
         * @instance
         * @public
         * @memberof Condition
         * @function FirstOpPosition
         * @type SegmentPositionNode
         */
        FirstOpPosition: SegmentPositionNode | null;
        /**
         * @instance
         * @public
         * @memberof Condition
         * @function SecondOpPosition
         * @type SegmentPositionNode
         */
        SecondOpPosition: SegmentPositionNode | null;
        /**
         * @instance
         * @public
         * @memberof Condition
         * @function ElementPosition
         * @type ElementPositionNode
         */
        ElementPosition: ElementPositionNode | null;
        /**
         * @instance
         * @public
         * @memberof Condition
         * @function Value
         * @type string
         */
        Value: string | null;
        /**
         * @instance
         * @public
         * @override
         * @this Condition
         * @memberof Condition
         * @return  {string}
         */
        toRuleString(): string | null;
        /**
         * Uses to validate rules from the RULES Section
         *
         * @instance
         * @public
         * @this Condition
         * @memberof Condition
         * @param   {EDIValidator}              validator        
         * @param   {FoundSegmentCollection}    foundSegments    
         * @param   {SegmentPositionNode}       sp
         * @return  {boolean}
         */
        evaluate(validator: EDIValidator | null, foundSegments: FoundSegmentCollection | null, sp: SegmentPositionNode | null): boolean;
        /**
         * Used for Self Rules
         *
         * @instance
         * @public
         * @this Condition
         * @memberof Condition
         * @param   {EDIValidator}                               validator        
         * @param   {System.Collections.Generic.Dictionary$2}    foundElements
         * @return  {boolean}
         */
        evaluate$1(validator: EDIValidator | null, foundElements: System.Collections.Generic.Dictionary$2<number,string> | null): boolean;
        /**
         * @instance
         * @private
         * @this Condition
         * @memberof Condition
         * @return  {void}
         */
    }
    interface ConditionFunc extends Function {
        prototype: Condition;
        /**
         * @instance
         * @public
         * @this Condition
         * @memberof Condition
         * @param   {string}    text     
         * @param   {number}    depth
         * @return  {void}
         */
        new (text: string | null, depth: number): Condition;
    }
    declare var Condition: ConditionFunc;

    /**
     * @public
     * @class CodeCondition
     * @augments Node
     */
    interface CodeCondition extends Node {
        /**
         * @instance
         * @public
         * @memberof CodeCondition
         * @function Id
         * @type string
         */
        Id: string | null;
        /**
         * @instance
         * @public
         * @override
         * @this CodeCondition
         * @memberof CodeCondition
         * @return  {string}
         */
        toRuleString(): string | null;
        /**
         * @instance
         * @private
         * @this CodeCondition
         * @memberof CodeCondition
         * @return  {void}
         */
    }
    interface CodeConditionFunc extends Function {
        prototype: CodeCondition;
        /**
         * @instance
         * @public
         * @this CodeCondition
         * @memberof CodeCondition
         * @param   {string}    text     
         * @param   {number}    depth
         * @return  {void}
         */
        new (text: string | null, depth: number): CodeCondition;
    }
    declare var CodeCondition: CodeConditionFunc;

    /**
     * @static
     * @abstract
     * @class X12Strings
     */
    interface X12Strings {
    }
    interface X12StringsFunc extends Function {
        prototype: X12Strings;
        new (): X12Strings;
        /**
         * @static
         * @public
         * @memberof X12Strings
         * @constant
         * @default "ST"
         * @type string
         */
        ST: string | null;
        /**
         * @static
         * @public
         * @memberof X12Strings
         * @constant
         * @default "SE"
         * @type string
         */
        SE: string | null;
        /**
         * @static
         * @public
         * @memberof X12Strings
         * @constant
         * @default "ISA"
         * @type string
         */
        ISA: string | null;
        /**
         * @static
         * @public
         * @memberof X12Strings
         * @constant
         * @default "IEA"
         * @type string
         */
        IEA: string | null;
        /**
         * @static
         * @public
         * @memberof X12Strings
         * @constant
         * @default "GE"
         * @type string
         */
        GE: string | null;
        /**
         * @static
         * @public
         * @memberof X12Strings
         * @constant
         * @default "GS"
         * @type string
         */
        GS: string | null;
        /**
         * @static
         * @public
         * @memberof X12Strings
         * @constant
         * @default "HL"
         * @type string
         */
        HL: string | null;
    }
    declare var X12Strings: X12StringsFunc;

    /**
     * Arguments to pass in for EDI file creation
     *
     * @public
     * @class WriteArguments
     */
    interface WriteArguments {
        /**
         * @instance
         * @public
         * @memberof WriteArguments
         * @type Delimiters
         */
        Delimiters: Delimiters | null;
        /**
         * @instance
         * @public
         * @memberof WriteArguments
         * @type System.Collections.Generic.List$1
         */
        Values: System.Collections.Generic.List$1<string> | null;
        /**
         * Whether or not to insert a new line after every segment
         *
         * @instance
         * @public
         * @memberof WriteArguments
         * @default true
         * @type boolean
         */
        NewLineAfterSegment: boolean;
        /**
         * @instance
         * @public
         * @memberof WriteArguments
         * @type number
         */
        NumberInterchangeCreated: number;
        /**
         * @instance
         * @public
         * @memberof WriteArguments
         * @type number
         */
        NumberSegmentsCreated: number;
        /**
         * @instance
         * @public
         * @memberof WriteArguments
         * @type number
         */
        NumberTransactionsCreated: number;
        /**
         * @instance
         * @public
         * @memberof WriteArguments
         * @type number
         */
        NumberFunctionalGroupsCreated: number;
        /**
         * @instance
         * @public
         * @memberof WriteArguments
         * @default true
         * @type boolean
         */
        AutoPlaceNumOfSegments: boolean;
        /**
         * @instance
         * @public
         * @memberof WriteArguments
         * @default true
         * @type boolean
         */
        AutoPlaceNumOfTransactions: boolean;
        /**
         * @instance
         * @public
         * @memberof WriteArguments
         * @default true
         * @type boolean
         */
        AutoPlaceNumOfFunctionalGroups: boolean;
        /**
         * @instance
         * @public
         * @memberof WriteArguments
         * @default true
         * @type boolean
         */
        PadISAElementValues: boolean;
    }
    interface WriteArgumentsFunc extends Function {
        prototype: WriteArguments;
        new (): WriteArguments;
    }
    declare var WriteArguments: WriteArgumentsFunc;

    /**
     * Represents data pertaining to the time it took to validate a file and if the file has passed
     validation
     *
     * @public
     * @class ValidationEventsArgs
     * @augments System.Object
     */
    interface ValidationEventsArgs {
        /**
         * Instance of EDIValidator
         *
         * @instance
         * @public
         * @memberof ValidationEventsArgs
         * @function EDIValidator
         * @type EDIValidator
         */
        EDIValidator: EDIValidator | null;
        /**
         * Check whether a file was successfully validated
         *
         * @instance
         * @public
         * @readonly
         * @memberof ValidationEventsArgs
         * @function Passed
         * @type boolean
         */
        Passed: boolean;
        /**
         * Get the amount of time passed in milliseconds for the validation process
         *
         * @instance
         * @public
         * @readonly
         * @memberof ValidationEventsArgs
         * @function Milliseconds
         * @type number
         */
        Milliseconds: number;
    }
    interface ValidationEventsArgsFunc extends Function {
        prototype: ValidationEventsArgs;
        /**
         * Creates a new ValidationEventArgs
         *
         * @instance
         * @public
         * @this ValidationEventsArgs
         * @memberof ValidationEventsArgs
         * @param   {EDIValidator}    validator       
         * @param   {boolean}         passed          
         * @param   {number}          milliseconds
         * @return  {void}
         */
        new (validator: EDIValidator | null, passed: boolean, milliseconds: number): ValidationEventsArgs;
    }
    declare var ValidationEventsArgs: ValidationEventsArgsFunc;

    /**
     * This class does not use element caching
     *
     * @class X12SegmentSetterNoCachingFromString
     * @augments X12SegmentGetterFromString
     */
    interface X12SegmentSetterNoCachingFromString extends X12SegmentGetterFromString {
        /**
         * @instance
         * @public
         * @override
         * @this X12SegmentSetterNoCachingFromString
         * @memberof X12SegmentSetterNoCachingFromString
         * @return  {LightWeightSegment}
         */
        getNextSegment(): LightWeightSegment | null;
        /**
         * @instance
         * @protected
         * @override
         * @this X12SegmentSetterNoCachingFromString
         * @memberof X12SegmentSetterNoCachingFromString
         * @param   {LightWeightSegment}    seg
         * @return  {void}
         */
    }
    interface X12SegmentSetterNoCachingFromStringFunc extends Function {
        prototype: X12SegmentSetterNoCachingFromString;
        /**
         * @instance
         * @public
         * @this X12SegmentSetterNoCachingFromString
         * @memberof X12SegmentSetterNoCachingFromString
         * @param   {EDIValidator}    validator
         * @return  {void}
         */
        new (validator: EDIValidator | null): X12SegmentSetterNoCachingFromString;
    }
    declare var X12SegmentSetterNoCachingFromString: X12SegmentSetterNoCachingFromStringFunc;

    /**
     * Represents a regular expression format that a data element's value must conform to
     *
     * @public
     * @class Format
     */
    interface Format {
        /**
         * Name of the pattern
         *
         * @instance
         * @public
         * @memberof Format
         * @function Name
         * @type string
         */
        Name: string | null;
        /**
         * Regular Expression pattern
         *
         * @instance
         * @public
         * @memberof Format
         * @function Pattern
         * @type string
         */
        Pattern: string | null;
    }
    interface FormatFunc extends Function {
        prototype: Format;
        /**
         * Creates a new format pattern
         *
         * @instance
         * @public
         * @this Format
         * @memberof Format
         * @return  {void}
         */
        new (): Format;
        /**
         * Creates a new format pattern
         *
         * @instance
         * @public
         * @this Format
         * @memberof Format
         * @return  {void}
         */
        ctor: {
            new (): Format
        };
        /**
         * Create a new format with a name and pattern
         *
         * @instance
         * @public
         * @this Format
         * @memberof Format
         * @param   {string}    name       name of pattern
         * @param   {string}    pattern    regular expression pattern
         * @return  {void}
         */
        $ctor1: {
            new (name: string | null, pattern: string | null): Format
        };
    }
    declare var Format: FormatFunc;

    /**
     * Enum to specify where file splitting should occur at the Header level(ST) or the Functional Group level (GS). Used by EDIFileSplitter
     *
     * @public
     * @class FileSplitLevel
     */
    enum FileSplitLevel {
        FUNCTIONALGROUP = 0,
        HEADER = 1,
        ENVELOPE = 2
    }

    /**
     * @static
     * @abstract
     * @class EDIRuleSection
     */
    interface EDIRuleSection {
    }
    interface EDIRuleSectionFunc extends Function {
        prototype: EDIRuleSection;
        new (): EDIRuleSection;
        /**
         * @static
         * @public
         * @memberof EDIRuleSection
         * @constant
         * @default "FILE DATA"
         * @type string
         */
        FILE_DATA: string | null;
        /**
         * @static
         * @public
         * @memberof EDIRuleSection
         * @constant
         * @default "ELEMENT DEFINITIONS"
         * @type string
         */
        ELEMENT_DEFINITIONS: string | null;
        /**
         * @static
         * @public
         * @memberof EDIRuleSection
         * @constant
         * @default "COMPOSITE ELEMENT DEFINITIONS"
         * @type string
         */
        COMPOSITE_ELEMENT_DEFINITIONS: string | null;
        /**
         * @static
         * @public
         * @memberof EDIRuleSection
         * @constant
         * @default "SEGMENT DEFINITIONS"
         * @type string
         */
        SEGMENT_DEFINITIONS: string | null;
        /**
         * @static
         * @public
         * @memberof EDIRuleSection
         * @constant
         * @default "SEGMENT SELF RULES"
         * @type string
         */
        SEGMENT_SELF_RULES: string | null;
        /**
         * @static
         * @public
         * @memberof EDIRuleSection
         * @constant
         * @default "COMPOSITE ELEMENT SELF RULES"
         * @type string
         */
        COMPOSITE_ELEMENT_SELF_RULES: string | null;
        /**
         * @static
         * @public
         * @memberof EDIRuleSection
         * @constant
         * @default "CODELISTS"
         * @type string
         */
        CODELISTS: string | null;
        /**
         * @static
         * @public
         * @memberof EDIRuleSection
         * @constant
         * @default "FORMATS"
         * @type string
         */
        FORMATS: string | null;
        /**
         * @static
         * @public
         * @memberof EDIRuleSection
         * @constant
         * @default "EDI FILE STRUCTURE"
         * @type string
         */
        EDI_FILE_STRUCTURE: string | null;
        /**
         * @static
         * @public
         * @memberof EDIRuleSection
         * @constant
         * @default "ELEMENT DESCRIPTIONS"
         * @type string
         */
        ELEMENT_DESCRIPTIONS: string | null;
        /**
         * @static
         * @public
         * @memberof EDIRuleSection
         * @constant
         * @default "ELEMENT CODES"
         * @type string
         */
        ELEMENT_CODES: string | null;
        /**
         * @static
         * @public
         * @memberof EDIRuleSection
         * @constant
         * @default "ELEMENT FORMATS"
         * @type string
         */
        ELEMENT_FORMATS: string | null;
        /**
         * @static
         * @public
         * @memberof EDIRuleSection
         * @constant
         * @default "ELEMENT UNIQUE VALUES"
         * @type string
         */
        ELEMENT_UNIQUE_VALUES: string | null;
        /**
         * @static
         * @public
         * @memberof EDIRuleSection
         * @constant
         * @default "SUMMARY"
         * @type string
         */
        SUMMARY: string | null;
        /**
         * @static
         * @public
         * @memberof EDIRuleSection
         * @constant
         * @default "ELEMENT EQUALITY"
         * @type string
         */
        ELEMENT_EQUALITY: string | null;
        /**
         * @static
         * @public
         * @memberof EDIRuleSection
         * @constant
         * @default "RULES"
         * @type string
         */
        RULES: string | null;
        /**
         * @static
         * @public
         * @memberof EDIRuleSection
         * @constant
         * @default "ELEMENT COUNTERS"
         * @type string
         */
        ELEMENT_COUNTERS: string | null;
        /**
         * @static
         * @public
         * @memberof EDIRuleSection
         * @constant
         * @default "ELEMENT CODE DESCRIPTION"
         * @type string
         */
        ELEMENT_CODE_DESCRIPTION: string | null;
        /**
         * @static
         * @public
         * @memberof EDIRuleSection
         * @constant
         * @default "LOOP DESCRIPTIONS"
         * @type string
         */
        LOOP_DESCRIPTIONS: string | null;
        /**
         * @static
         * @public
         * @memberof EDIRuleSection
         * @constant
         * @default "SEGMENT DESCRIPTIONS"
         * @type string
         */
        SEGMENT_DESCRIPTIONS: string | null;
        /**
         * @static
         * @public
         * @memberof EDIRuleSection
         * @constant
         * @default "SAMPLE DATA"
         * @type string
         */
        SAMPLE_DATA: string | null;
    }
    declare var EDIRuleSection: EDIRuleSectionFunc;

    /**
     * A light weight version of the EDIDocument used to creates EDI X12 and EDIFACT document files
     *
     * @public
     * @class EDILightWeightDocument
     */
    interface EDILightWeightDocument {
        /**
         * Event raised when EDI document creation process has completed
         *
         * @instance
         * @public
         * @this EDILightWeightDocument
         * @memberof EDILightWeightDocument
         * @function addEDIDocumentFinished
         * @param   {GeneralEvent}    value
         * @return  {void}
         */
        addEDIDocumentFinished(value: {(sender: any): void} | null): void;
        /**
         * Event raised when EDI document creation process has completed
         *
         * @instance
         * @public
         * @this EDILightWeightDocument
         * @memberof EDILightWeightDocument
         * @function removeEDIDocumentFinished
         * @param   {GeneralEvent}    value
         * @return  {void}
         */
        removeEDIDocumentFinished(value: {(sender: any): void} | null): void;
        /**
         * Gets or sets the loops.
         *
         * @instance
         * @public
         * @memberof EDILightWeightDocument
         * @function Loops
         * @type System.Collections.Generic.List$1
         */
        Loops: System.Collections.Generic.List$1<LightWeightLoop> | null;
        /**
         * Segment and element delimiters
         *
         * @instance
         * @public
         * @memberof EDILightWeightDocument
         * @function Delimiters
         * @type Delimiters
         */
        Delimiters: Delimiters | null;
        /**
         * Gets or sets a value indicating whether each segment should be in a new line.
         *
         * @instance
         * @public
         * @memberof EDILightWeightDocument
         * @function NewLineAfterSegment
         * @type boolean
         */
        NewLineAfterSegment: boolean;
        /**
         * Places the correct number of segments in the SE segment (X12) or UNT segment (EDIFACT)
         *
         * @instance
         * @public
         * @memberof EDILightWeightDocument
         * @function AutoPlaceCorrectNumOfSegments
         * @type boolean
         */
        AutoPlaceCorrectNumOfSegments: boolean;
        /**
         * Places the correct number of ST Headers in the GE segment element 1
         *
         * @instance
         * @public
         * @memberof EDILightWeightDocument
         * @function AutoPlaceCorrectNumOfST
         * @type boolean
         */
        AutoPlaceCorrectNumOfST: boolean;
        /**
         * Places the correct number of GS Functional Groups in the IEA segment element 1
         *
         * @instance
         * @public
         * @memberof EDILightWeightDocument
         * @function AutoPlaceCorrectNumOfGT
         * @type boolean
         */
        AutoPlaceCorrectNumOfGT: boolean;
        /**
         * Gets the main loop after this document has been initialized by the EDIValidator component
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDILightWeightDocument
         * @function MainSection
         * @type LightWeightLoop
         */
        MainSection: LightWeightLoop | null;
        /**
         * Creates a loop.
         *
         * @instance
         * @public
         * @this EDILightWeightDocument
         * @memberof EDILightWeightDocument
         * @param   {string}             loopName    The name.
         * @return  {LightWeightLoop}
         */
        createLoop(loopName: string | null): LightWeightLoop | null;
        /**
         * Generate EDI Data without writing to a filestream
         *
         * @instance
         * @public
         * @this EDILightWeightDocument
         * @memberof EDILightWeightDocument
         * @return  {string}        EDI data as string
         */
        generateEDIData(): string | null;
        /**
         * @instance
         * @private
         * @this EDILightWeightDocument
         * @memberof EDILightWeightDocument
         * @param   {LightWeightLoop}    loop
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDILightWeightDocument
         * @memberof EDILightWeightDocument
         * @param   {System.Collections.Generic.List$1}    segments
         * @return  {void}
         */
    }
    interface EDILightWeightDocumentFunc extends Function {
        prototype: EDILightWeightDocument;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this EDILightWeightDocument
         * @memberof EDILightWeightDocument
         * @return  {void}
         */
        new (): EDILightWeightDocument;
        /**
         * Initializes the control segments.
         *
         * @static
         * @private
         * @this EDILightWeightDocument
         * @memberof EDILightWeightDocument
         * @return  {void}
         */
    }
    declare var EDILightWeightDocument: EDILightWeightDocumentFunc;

    /**
     * Component used to split EDI files
     *
     * @public
     * @class EDIFileSplitter
     */
    interface EDIFileSplitter {
        /**
         * Gets or sets the number of ST Headers or GS Functional Groups per file
         *
         * @instance
         * @public
         * @memberof EDIFileSplitter
         * @function NumberOfItemsPerFile
         * @type number
         */
        NumberOfItemsPerFile: number;
        /**
         * Gets or sets the trim string.
         *
         * @instance
         * @public
         * @memberof EDIFileSplitter
         * @function TrimString
         * @type string
         */
        TrimString: string | null;
        /**
         * Gets or sets the file split level
         *
         * @instance
         * @public
         * @memberof EDIFileSplitter
         * @function FileSplitLevel
         * @type FileSplitLevel
         */
        FileSplitLevel: FileSplitLevel;
        /**
         * Splits EDI data
         *
         * @instance
         * @public
         * @this EDIFileSplitter
         * @memberof EDIFileSplitter
         * @param   {string}            ediData    data to split
         * @return  {Array.<string>}
         */
        split(ediData: string | null): string[] | null;
        /**
         * @instance
         * @private
         * @this EDIFileSplitter
         * @memberof EDIFileSplitter
         * @param   {string}            file
         * @return  {Array.<string>}
         */
        /**
         * @instance
         * @private
         * @this EDIFileSplitter
         * @memberof EDIFileSplitter
         * @param   {string}    segmentLine         
         * @param   {number}    elementSeparator
         * @return  {string}
         */
        /**
         * @instance
         * @private
         * @this EDIFileSplitter
         * @memberof EDIFileSplitter
         * @param   {string}    segmentLine         
         * @param   {number}    elementSeparator
         * @return  {string}
         */
        /**
         * @instance
         * @private
         * @this EDIFileSplitter
         * @memberof EDIFileSplitter
         * @param   {string}                               line        
         * @param   {System.Collections.Generic.List$1}    segNames
         * @return  {boolean}
         */
    }
    interface EDIFileSplitterFunc extends Function {
        prototype: EDIFileSplitter;
        FileSegmentCounts: EDIFileSplitter.FileSegmentCountsFunc;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this EDIFileSplitter
         * @memberof EDIFileSplitter
         * @return  {void}
         */
        new (): EDIFileSplitter;
    }
    declare var EDIFileSplitter: EDIFileSplitterFunc;
    module EDIFileSplitter {
        /**
         * @private
         * @class EDIFileSplitter.FileSegmentCounts
         */
        interface FileSegmentCounts {
            /**
             * @instance
             * @public
             * @memberof EDIFileSplitter.FileSegmentCounts
             * @type number
             */
            IECount: number;
            /**
             * @instance
             * @public
             * @memberof EDIFileSplitter.FileSegmentCounts
             * @type number
             */
            GECount: number;
            /**
             * @instance
             * @public
             * @memberof EDIFileSplitter.FileSegmentCounts
             * @type number
             */
            SECount: number;
        }
        interface FileSegmentCountsFunc extends Function {
            prototype: FileSegmentCounts;
            new (): FileSegmentCounts;
        }
    }

    /**
     * Parses and scrubs EDI files
     *
     * @public
     * @class EDIFileScrubber
     */
    interface EDIFileScrubber {
        /**
         * If set the true then delimiters will be autodetected
         *
         * @instance
         * @public
         * @memberof EDIFileScrubber
         * @function AutoDetectDelimiters
         * @type boolean
         */
        AutoDetectDelimiters: boolean;
        /**
         * Event fired when file scrubbing is complete
         *
         * @instance
         * @public
         * @this EDIFileScrubber
         * @memberof EDIFileScrubber
         * @function addFileScrubbingCompleted
         * @param   {EDIFileScrubber.EDIFileScrubbingCompletedEvent}    value
         * @return  {void}
         */
        addFileScrubbingCompleted(value: {(sender: any, e: FileLoadingEventArgs): void} | null): void;
        /**
         * Event fired when file scrubbing is complete
         *
         * @instance
         * @public
         * @this EDIFileScrubber
         * @memberof EDIFileScrubber
         * @function removeFileScrubbingCompleted
         * @param   {EDIFileScrubber.EDIFileScrubbingCompletedEvent}    value
         * @return  {void}
         */
        removeFileScrubbingCompleted(value: {(sender: any, e: FileLoadingEventArgs): void} | null): void;
        /**
         * Rules used to scrub a file
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIFileScrubber
         * @function ScrubRules
         * @type System.Collections.Generic.List$1
         */
        ScrubRules: System.Collections.Generic.List$1<ScrubRule> | null;
        /**
         * String to ignore at between segment delimiters
         *
         * @instance
         * @public
         * @memberof EDIFileScrubber
         * @function TrimString
         * @type string
         */
        TrimString: string | null;
        /**
         * EDI file delimiters
         *
         * @instance
         * @public
         * @memberof EDIFileScrubber
         * @function Delimiters
         * @type Delimiters
         */
        Delimiters: Delimiters | null;
        /**
         * Used to report any errors encountered during file scrubbing
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIFileScrubber
         * @function ErrorString
         * @type string
         */
        ErrorString: string | null;
        /**
         * Used to specify the type of EDI file to be scrubbed
         *
         * @instance
         * @public
         * @memberof EDIFileScrubber
         * @function EDIFileType
         * @type FileType
         */
        EDIFileType: FileType;
        /**
         * EDI data to scrub. EDI data can also be specified from a file using the EDIFile property
         *
         * @instance
         * @public
         * @memberof EDIFileScrubber
         * @function EDIDataString
         * @type string
         */
        EDIDataString: string | null;
        /**
         * @instance
         * @private
         * @this EDIFileScrubber
         * @memberof EDIFileScrubber
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIFileScrubber
         * @memberof EDIFileScrubber
         * @param   {string}    ediData
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIFileScrubber
         * @memberof EDIFileScrubber
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIFileScrubber
         * @memberof EDIFileScrubber
         * @return  {void}
         */
        /**
         * Adds a new scrub rule
         *
         * @instance
         * @public
         * @this EDIFileScrubber
         * @memberof EDIFileScrubber
         * @param   {ScrubRule}    rule    scrub rule to add
         * @return  {void}
         */
        addRule(rule: ScrubRule | null): void;
        /**
         * Scrubs EDI data from a string
         *
         * @instance
         * @public
         * @this EDIFileScrubber
         * @memberof EDIFileScrubber
         * @param   {string}                    ediData    EDILightWeightDocument
         * @return  {EDILightWeightDocument}
         */
        scrub(ediData: string | null): EDILightWeightDocument | null;
        /**
         * Scrub EDI File. This results in only one loop with all DataSegments
         *
         * @instance
         * @private
         * @this EDIFileScrubber
         * @memberof EDIFileScrubber
         * @return  {EDILightWeightDocument}
         */
        /**
         * @instance
         * @private
         * @this EDIFileScrubber
         * @memberof EDIFileScrubber
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIFileScrubber
         * @memberof EDIFileScrubber
         * @return  {string}
         */
        /**
         * @instance
         * @private
         * @this EDIFileScrubber
         * @memberof EDIFileScrubber
         * @return  {LightWeightSegment}
         */
        /**
         * Gets the next segment.
         *
         * @instance
         * @private
         * @this EDIFileScrubber
         * @memberof EDIFileScrubber
         * @return  {LightWeightSegment}
         */
        /**
         * @instance
         * @private
         * @this EDIFileScrubber
         * @memberof EDIFileScrubber
         * @param   {string}     segmentName
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIFileScrubber
         * @memberof EDIFileScrubber
         * @return  {string}
         */
        /**
         * @instance
         * @private
         * @this EDIFileScrubber
         * @memberof EDIFileScrubber
         * @param   {EDIError}    error
         * @return  {void}
         */
    }
    interface EDIFileScrubberFunc extends Function {
        prototype: EDIFileScrubber;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this EDIFileScrubber
         * @memberof EDIFileScrubber
         * @return  {void}
         */
        new (): EDIFileScrubber;
    }
    declare var EDIFileScrubber: EDIFileScrubberFunc;

    /**
     * Exception thrown when an attempt is made to Take items from a file reader when 
     no items exists
     *
     * @class EDIFileParserException
     * @augments System.Exception
     */
    interface EDIFileParserException extends System.Exception {
    }
    interface EDIFileParserExceptionFunc extends Function {
        prototype: EDIFileParserException;
    }
    declare var EDIFileParserException: EDIFileParserExceptionFunc;

    /**
     * Parses and loads EDI files without any rules
     *
     * @public
     * @class EDIFileLoader
     */
    interface EDIFileLoader {
        /**
         * If set the true then delimiters will be autodetected
         *
         * @instance
         * @public
         * @memberof EDIFileLoader
         * @function AutoDetectDelimiters
         * @type boolean
         */
        AutoDetectDelimiters: boolean;
        /**
         * Event fired when file loading is complete
         *
         * @instance
         * @public
         * @this EDIFileLoader
         * @memberof EDIFileLoader
         * @function addFileLoadingCompleted
         * @param   {EDIFileLoader.EDIFileLoadingCompletedEvent}    value
         * @return  {void}
         */
        addFileLoadingCompleted(value: {(sender: any, e: FileLoadingEventArgs): void} | null): void;
        /**
         * Event fired when file loading is complete
         *
         * @instance
         * @public
         * @this EDIFileLoader
         * @memberof EDIFileLoader
         * @function removeFileLoadingCompleted
         * @param   {EDIFileLoader.EDIFileLoadingCompletedEvent}    value
         * @return  {void}
         */
        removeFileLoadingCompleted(value: {(sender: any, e: FileLoadingEventArgs): void} | null): void;
        /**
         * String to ignore at between segment delimiters
         *
         * @instance
         * @public
         * @memberof EDIFileLoader
         * @function TrimString
         * @type string
         */
        TrimString: string | null;
        /**
         * Get/Set whether or not a separate loop is created whenever an ISA segment is encountered
         *
         * @instance
         * @public
         * @memberof EDIFileLoader
         * @function FlatStructure
         * @type boolean
         */
        FlatStructure: boolean;
        /**
         * EDI file delimiters
         *
         * @instance
         * @public
         * @memberof EDIFileLoader
         * @function Delimiters
         * @type Delimiters
         */
        Delimiters: Delimiters | null;
        /**
         * EDI data to load. EDI data can also be specified from a file using the EDIFile property
         *
         * @instance
         * @public
         * @memberof EDIFileLoader
         * @function EDIDataString
         * @type string
         */
        EDIDataString: string | null;
        /**
         * @instance
         * @private
         * @this EDIFileLoader
         * @memberof EDIFileLoader
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIFileLoader
         * @memberof EDIFileLoader
         * @param   {string}    ediData
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIFileLoader
         * @memberof EDIFileLoader
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIFileLoader
         * @memberof EDIFileLoader
         * @return  {void}
         */
        /**
         * Load EDI File. This is result in only one loop with all DataSegments
         *
         * @instance
         * @public
         * @this EDIFileLoader
         * @memberof EDIFileLoader
         * @return  {EDILightWeightDocument}
         */
        load(): EDILightWeightDocument | null;
        /**
         * @instance
         * @private
         * @this EDIFileLoader
         * @memberof EDIFileLoader
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIFileLoader
         * @memberof EDIFileLoader
         * @return  {string}
         */
        /**
         * @instance
         * @private
         * @this EDIFileLoader
         * @memberof EDIFileLoader
         * @return  {LightWeightSegment}
         */
        /**
         * Gets the next segment.
         *
         * @instance
         * @private
         * @this EDIFileLoader
         * @memberof EDIFileLoader
         * @return  {LightWeightSegment}
         */
        /**
         * @instance
         * @private
         * @this EDIFileLoader
         * @memberof EDIFileLoader
         * @param   {string}     segmentName
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIFileLoader
         * @memberof EDIFileLoader
         * @return  {string}
         */
        /**
         * @instance
         * @private
         * @this EDIFileLoader
         * @memberof EDIFileLoader
         * @param   {EDIError}    error
         * @return  {void}
         */
    }
    interface EDIFileLoaderFunc extends Function {
        prototype: EDIFileLoader;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this EDIFileLoader
         * @memberof EDIFileLoader
         * @return  {void}
         */
        new (): EDIFileLoader;
    }
    declare var EDIFileLoader: EDIFileLoaderFunc;

    /**
     * Component used to join EDI files
     *
     * @public
     * @class EDIFileJoiner
     */
    interface EDIFileJoiner {
        /**
         * If set the true then delimiters will be autodetected
         *
         * @instance
         * @public
         * @memberof EDIFileJoiner
         * @function AutoDetectDelimiters
         * @type boolean
         */
        AutoDetectDelimiters: boolean;
        /**
         * @instance
         * @public
         * @memberof EDIFileJoiner
         * @function Delimiters
         * @type Delimiters
         */
        Delimiters: Delimiters | null;
        /**
         * Gets or sets whether to generate ST control number
         *
         * @instance
         * @public
         * @memberof EDIFileJoiner
         * @function AutoGenerateSTControlNumber
         * @type boolean
         */
        AutoGenerateSTControlNumber: boolean;
        /**
         * Gets or sets whether to generate GS control number
         *
         * @instance
         * @public
         * @memberof EDIFileJoiner
         * @function AutoGenerateGSControlNumber
         * @type boolean
         */
        AutoGenerateGSControlNumber: boolean;
        /**
         * Raised when file joining operations are completed
         *
         * @instance
         * @public
         * @this EDIFileJoiner
         * @memberof EDIFileJoiner
         * @function addOnFileOperationCompleted
         * @param   {System.EventHandler}    value
         * @return  {void}
         */
        addOnFileOperationCompleted(value: {(sender: any, e: FileOperationCompletedEventArgs): void} | null): void;
        /**
         * Raised when file joining operations are completed
         *
         * @instance
         * @public
         * @this EDIFileJoiner
         * @memberof EDIFileJoiner
         * @function removeOnFileOperationCompleted
         * @param   {System.EventHandler}    value
         * @return  {void}
         */
        removeOnFileOperationCompleted(value: {(sender: any, e: FileOperationCompletedEventArgs): void} | null): void;
        /**
         * Gets or sets the trim string. Trim string are used to remove formatting characters from edi data
         *
         * @instance
         * @public
         * @memberof EDIFileJoiner
         * @function TrimString
         * @type string
         */
        TrimString: string | null;
        /**
         * Gets or sets the file join level where file joining should occur, at the Header level(ST) or the Functional Group level (GS)
         *
         * @instance
         * @public
         * @memberof EDIFileJoiner
         * @function FileJoinLevel
         * @type FileJoinLevel
         */
        FileJoinLevel: FileJoinLevel;
        /**
         * Gets or sets a value indicating whether each segment should be in a new line.
         *
         * @instance
         * @public
         * @memberof EDIFileJoiner
         * @function EachSegmentInNewLine
         * @type boolean
         */
        EachSegmentInNewLine: boolean;
        /**
         * Join EDI data from strings
         *
         * @instance
         * @public
         * @this EDIFileJoiner
         * @memberof EDIFileJoiner
         * @param   {Array.<string>}    ediDataStrings    list of EDI strings to join
         * @return  {string}
         */
        join(ediDataStrings: string[] | null): string | null;
        /**
         * @instance
         * @private
         * @this EDIFileJoiner
         * @memberof EDIFileJoiner
         * @param   {string}    segmentLine         
         * @param   {number}    elementSeparator    
         * @param   {number}    elemNum
         * @return  {string}
         */
        /**
         * @instance
         * @private
         * @this EDIFileJoiner
         * @memberof EDIFileJoiner
         * @param   {System.String}    segmentLine         
         * @param   {number}           elementSeparator    
         * @param   {number}           elemNum             
         * @param   {number}           controlNumber       
         * @param   {string}           format
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIFileJoiner
         * @memberof EDIFileJoiner
         * @param   {string}    segmentLine         
         * @param   {number}    elementSeparator
         * @return  {string}
         */
        /**
         * @instance
         * @private
         * @this EDIFileJoiner
         * @memberof EDIFileJoiner
         * @param   {string}                               line        
         * @param   {System.Collections.Generic.List$1}    segNames
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIFileJoiner
         * @memberof EDIFileJoiner
         * @param   {string}                               line        
         * @param   {System.Collections.Generic.List$1}    segNames
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIFileJoiner
         * @memberof EDIFileJoiner
         * @param   {FileOperationCompletedEventArgs}    args
         * @return  {void}
         */
    }
    interface EDIFileJoinerFunc extends Function {
        prototype: EDIFileJoiner;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this EDIFileJoiner
         * @memberof EDIFileJoiner
         * @return  {void}
         */
        new (): EDIFileJoiner;
    }
    declare var EDIFileJoiner: EDIFileJoinerFunc;

    /**
     * @class EDIFACTStrings
     */
    interface EDIFACTStrings {
    }
    interface EDIFACTStringsFunc extends Function {
        prototype: EDIFACTStrings;
        new (): EDIFACTStrings;
        /**
         * @static
         * @public
         * @memberof EDIFACTStrings
         * @constant
         * @default "UNA"
         * @type string
         */
        UNA: string | null;
        /**
         * @static
         * @public
         * @memberof EDIFACTStrings
         * @constant
         * @default "UNT"
         * @type string
         */
        UNT: string | null;
        /**
         * @static
         * @public
         * @memberof EDIFACTStrings
         * @constant
         * @default "UNH"
         * @type string
         */
        UNH: string | null;
        /**
         * @static
         * @public
         * @memberof EDIFACTStrings
         * @constant
         * @default "UNB"
         * @type string
         */
        UNB: string | null;
        /**
         * @static
         * @public
         * @memberof EDIFACTStrings
         * @constant
         * @default "UNG"
         * @type string
         */
        UNG: string | null;
        /**
         * @static
         * @public
         * @memberof EDIFACTStrings
         * @constant
         * @default "UNE"
         * @type string
         */
        UNE: string | null;
        /**
         * @static
         * @public
         * @memberof EDIFACTStrings
         * @constant
         * @default "UNZ"
         * @type string
         */
        UNZ: string | null;
    }
    declare var EDIFACTStrings: EDIFACTStringsFunc;

    /**
     * @static
     * @abstract
     * @class EDIFACTSegmentHelper
     */
    interface EDIFACTSegmentHelper {
    }
    interface EDIFACTSegmentHelperFunc extends Function {
        prototype: EDIFACTSegmentHelper;
        new (): EDIFACTSegmentHelper;
        /**
         * @static
         * @public
         * @this EDIFACTSegmentHelper
         * @memberof EDIFACTSegmentHelper
         * @param   {Array.<string>}                       a          
         * @param   {number}                               len        
         * @param   {number}                               rel        
         * @param   {number}                               sepChar
         * @return  {System.Collections.Generic.List$1}
         */
        normalize(a: string[] | null, len: number, rel: number, sepChar: number): System.Collections.Generic.List$1<string> | null;
        /**
         * @static
         * @public
         * @this EDIFACTSegmentHelper
         * @memberof EDIFACTSegmentHelper
         * @param   {Array.<string>}                       a          
         * @param   {number}                               rel        
         * @param   {number}                               sepChar
         * @return  {System.Collections.Generic.List$1}
         */
        normalizeComposite(a: string[] | null, rel: number, sepChar: number): System.Collections.Generic.List$1<string> | null;
    }
    declare var EDIFACTSegmentHelper: EDIFACTSegmentHelperFunc;

    /**
     * This class uses element caching
     *
     * @class X12SegmentGetterFromString
     */
    interface X12SegmentGetterFromString {
        /**
         * @instance
         * @public
         * @this X12SegmentGetterFromString
         * @memberof X12SegmentGetterFromString
         * @return  {LightWeightSegment}
         */
        getNextSegment(): LightWeightSegment | null;
        /**
         * This procedure is required because sometimes a composite element
         will only have one child.  The means that when parsed it will be 
         mistaken for a reqular element
         *
         * @instance
         * @protected
         * @this X12SegmentGetterFromString
         * @memberof X12SegmentGetterFromString
         * @param   {LightWeightSegment}    seg
         * @return  {void}
         */
        /**
         * @instance
         * @protected
         * @this X12SegmentGetterFromString
         * @memberof X12SegmentGetterFromString
         * @param   {string}    message
         * @return  {void}
         */
    }
    interface X12SegmentGetterFromStringFunc extends Function {
        prototype: X12SegmentGetterFromString;
        /**
         * @instance
         * @public
         * @this X12SegmentGetterFromString
         * @memberof X12SegmentGetterFromString
         * @param   {EDIValidator}    validator
         * @return  {void}
         */
        new (validator: EDIValidator | null): X12SegmentGetterFromString;
    }
    declare var X12SegmentGetterFromString: X12SegmentGetterFromStringFunc;

    /**
     * Represents a general EDI error.  Errors are available after validation
     *
     * @public
     * @class EDIError
     */
    interface EDIError {
        /**
         * Snip level
         *
         * @instance
         * @public
         * @memberof EDIError
         * @function SnipLevel
         * @type SnipTestLevel
         */
        SnipLevel: SnipTestLevel;
        /**
         * The schema of the segment that was being validated while the error/warning occurred
         *
         * @instance
         * @public
         * @memberof EDIError
         * @function SegmentSchema
         * @type DataSegment
         */
        SegmentSchema: DataSegment | null;
        /**
         * The actual segment that was being evaluated while the error/warning occurred
         *
         * @instance
         * @public
         * @memberof EDIError
         * @function ValidatingSegment
         * @type LightWeightSegment
         */
        ValidatingSegment: LightWeightSegment | null;
        /**
         * Gets or sets the segment position in transaction.
         *
         * @instance
         * @public
         * @memberof EDIError
         * @function SegmentPositionInTransaction
         * @type number
         */
        SegmentPositionInTransaction: number;
        /**
         * Gets the ST segment.
         *
         * @instance
         * @public
         * @memberof EDIError
         * @function STSegment
         * @type LightWeightSegment
         */
        STSegment: LightWeightSegment | null;
        /**
         * Gets the GS segment.
         *
         * @instance
         * @public
         * @memberof EDIError
         * @function GSSegment
         * @type LightWeightSegment
         */
        GSSegment: LightWeightSegment | null;
        /**
         * If the ClosestSegmentToError property is set on the EDIValidator this property will contain that segment
         *
         * @instance
         * @public
         * @memberof EDIError
         * @function ClosestSegment
         * @type LightWeightSegment
         */
        ClosestSegment: LightWeightSegment | null;
        /**
         * Description of the segment that contains the error
         *
         * @instance
         * @public
         * @memberof EDIError
         * @function SegmentDescription
         * @type string
         */
        SegmentDescription: string | null;
        /**
         * Description of the element that contains the error
         *
         * @instance
         * @public
         * @memberof EDIError
         * @function ElementDescription
         * @type string
         */
        ElementDescription: string | null;
        /**
         * Description of the composite element that contains the error
         *
         * @instance
         * @public
         * @memberof EDIError
         * @function CompositeElementDescription
         * @type string
         */
        CompositeElementDescription: string | null;
        /**
         * Description of the loop that contains the error
         *
         * @instance
         * @public
         * @memberof EDIError
         * @function LoopDescription
         * @type string
         */
        LoopDescription: string | null;
        /**
         * General error message type
         *
         * @instance
         * @public
         * @memberof EDIError
         * @function Message
         * @type EDIValidationMessage
         */
        Message: EDIValidationMessage;
        /**
         * Get the name of the segment that contains the error
         *
         * @instance
         * @public
         * @memberof EDIError
         * @function Segment
         * @type string
         */
        Segment: string | null;
        /**
         * Get the segment ordinal number that contains the error
         *
         * @instance
         * @public
         * @memberof EDIError
         * @function SegmentOrdinal
         * @type number
         */
        SegmentOrdinal: number;
        /**
         * Get the element number that contains the error
         *
         * @instance
         * @public
         * @memberof EDIError
         * @function ElementOrdinal
         * @type number
         */
        ElementOrdinal: number;
        /**
         * Get the composite element number that contains the error
         *
         * @instance
         * @public
         * @memberof EDIError
         * @function CompositeElementOrdinal
         * @type number
         */
        CompositeElementOrdinal: number;
        /**
         * Get the description of the error
         *
         * @instance
         * @public
         * @memberof EDIError
         * @function Description
         * @type string
         */
        Description: string | null;
        /**
         * Get the name of the loop that contains the error
         *
         * @instance
         * @public
         * @memberof EDIError
         * @function Loop
         * @type string
         */
        Loop: string | null;
        /**
         * Get the line number of the error in the EDI file
         *
         * @instance
         * @public
         * @memberof EDIError
         * @function LineNumber
         * @type number
         */
        LineNumber: number;
        /**
         * Gets the stack trace if this is an unexpected error
         *
         * @instance
         * @public
         * @memberof EDIError
         * @function StackTrace
         * @type string
         */
        StackTrace: string | null;
        /**
         * Get a string represenation of the error
         *
         * @instance
         * @public
         * @override
         * @this EDIError
         * @memberof EDIError
         * @return  {string}
         */
        toString(): string | null;
        /**
         * Sets the snip level.
         *
         * @instance
         * @protected
         * @this EDIError
         * @memberof EDIError
         * @return  {void}
         */
    }
    interface EDIErrorFunc extends Function {
        prototype: EDIError;
        /**
         * @instance
         * @public
         * @this EDIError
         * @memberof EDIError
         * @return  {void}
         */
        new (): EDIError;
        /**
         * @instance
         * @public
         * @this EDIError
         * @memberof EDIError
         * @return  {void}
         */
        ctor: {
            new (): EDIError
        };
        /**
         * @instance
         * @public
         * @this EDIError
         * @memberof EDIError
         * @param   {number}                  lineNumber             
         * @param   {string}                  loop                   
         * @param   {string}                  segment                
         * @param   {number}                  elementOrdinal         
         * @param   {number}                  compositeElementOrd    
         * @param   {EDIValidationMessage}    message                
         * @param   {string}                  description            
         * @param   {LightWeightSegment}      currentSTSegment       
         * @param   {LightWeightSegment}      currentGSSegment       
         * @param   {string}                  position               
         * @param   {number}                  segmentPosition        
         * @param   {DataSegment}             schemaSeg
         * @return  {void}
         */
        $ctor1: {
            new (lineNumber: number, loop: string | null, segment: string | null, elementOrdinal: number, compositeElementOrd: number, message: EDIValidationMessage, description: string | null, currentSTSegment: LightWeightSegment | null, currentGSSegment: LightWeightSegment | null, position: string | null, segmentPosition: number, schemaSeg: DataSegment | null): EDIError
        };
    }
    declare var EDIError: EDIErrorFunc;

    /**
     * Exception thrown when an exception occurred while
     generating an EDI document
     *
     * @public
     * @class EDIDocumentException
     * @augments System.Exception
     */
    interface EDIDocumentException extends System.Exception {
    }
    interface EDIDocumentExceptionFunc extends Function {
        prototype: EDIDocumentException;
    }
    declare var EDIDocumentException: EDIDocumentExceptionFunc;

    /**
     * Creates EDI X12 and EDIFACT document files
     *
     * @public
     * @class EDIDocument
     */
    interface EDIDocument {
        /**
         * Event raised when EDI document creation process has completed
         *
         * @instance
         * @public
         * @this EDIDocument
         * @memberof EDIDocument
         * @function addEDIDocumentFinished
         * @param   {GeneralEvent}    value
         * @return  {void}
         */
        addEDIDocumentFinished(value: {(sender: any): void} | null): void;
        /**
         * Event raised when EDI document creation process has completed
         *
         * @instance
         * @public
         * @this EDIDocument
         * @memberof EDIDocument
         * @function removeEDIDocumentFinished
         * @param   {GeneralEvent}    value
         * @return  {void}
         */
        removeEDIDocumentFinished(value: {(sender: any): void} | null): void;
        /**
         * String to insert between segments for formatting
         *
         * @instance
         * @public
         * @memberof EDIDocument
         * @function SegmentSeparatorString
         * @type string
         */
        SegmentSeparatorString: string | null;
        /**
         * Segment and element delimiters
         *
         * @instance
         * @public
         * @memberof EDIDocument
         * @function Delimiters
         * @type Delimiters
         */
        Delimiters: Delimiters | null;
        /**
         * Places the correct number of segments in the SE segment (X12) or UNT segment (EDIFACT)
         *
         * @instance
         * @public
         * @memberof EDIDocument
         * @function AutoPlaceCorrectNumOfSegments
         * @type boolean
         */
        AutoPlaceCorrectNumOfSegments: boolean;
        /**
         * Places the correct number of ST Headers in the GE segment element 1
         *
         * @instance
         * @public
         * @memberof EDIDocument
         * @function AutoPlaceCorrectNumOfST
         * @type boolean
         */
        AutoPlaceCorrectNumOfST: boolean;
        /**
         * Places the correct number of GS Functional Groups in the IEA segment element 1
         *
         * @instance
         * @public
         * @memberof EDIDocument
         * @function AutoPlaceCorrectNumOfGT
         * @type boolean
         */
        AutoPlaceCorrectNumOfGT: boolean;
        /**
         * Removes empty trailing elements
         *
         * @instance
         * @public
         * @memberof EDIDocument
         * @function TruncateEmptyElements
         * @type boolean
         */
        TruncateEmptyElements: boolean;
        /**
         * Removes empty trailing composites elements
         *
         * @instance
         * @public
         * @memberof EDIDocument
         * @function TruncateEmptyCompositeElements
         * @type boolean
         */
        TruncateEmptyCompositeElements: boolean;
        /**
         * Pad or trims element data to reach mininum and maximum element length requirements
         *
         * @instance
         * @public
         * @memberof EDIDocument
         * @function PadDataValues
         * @type boolean
         */
        PadDataValues: boolean;
        /**
         * Trims blank spaces from the beginning and ending of element data
         *
         * @instance
         * @public
         * @memberof EDIDocument
         * @function AutoTrimElements
         * @type boolean
         */
        AutoTrimElements: boolean;
        /**
         * A string representation of the EDI file created
         *
         * @instance
         * @public
         * @memberof EDIDocument
         * @function EDIFileString
         * @type string
         */
        EDIFileString: string | null;
        /**
         * Main EDI loop.  All other loops will be added to this loop
         *
         * @instance
         * @public
         * @memberof EDIDocument
         * @function Loops
         * @type System.Collections.Generic.List$1
         */
        Loops: System.Collections.Generic.List$1<Loop> | null;
        /**
         * @instance
         * @private
         * @this EDIDocument
         * @memberof EDIDocument
         * @param   {string}                       text    
         * @param   {System.Text.StringBuilder}    sb
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIDocument
         * @memberof EDIDocument
         * @param   {Loop}    loop
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIDocument
         * @memberof EDIDocument
         * @param   {System.Collections.Generic.List$1}    segments
         * @return  {void}
         */
        /**
         * Generate EDI Data without writing to a filestream
         *
         * @instance
         * @public
         * @this EDIDocument
         * @memberof EDIDocument
         * @return  {string}        EDI data as string
         */
        generateEDIData(): string | null;
        /**
         * @instance
         * @private
         * @this EDIDocument
         * @memberof EDIDocument
         * @param   {number}    minLength      
         * @param   {number}    maxLength      
         * @param   {string}    dataValue      
         * @param   {number}    paddingChar
         * @return  {string}
         */
        /**
         * @instance
         * @private
         * @this EDIDocument
         * @memberof EDIDocument
         * @param   {DataSegment}    segment
         * @return  {void}
         */
    }
    interface EDIDocumentFunc extends Function {
        prototype: EDIDocument;
        /**
         * Creates a new EDIDocument component
         *
         * @instance
         * @public
         * @this EDIDocument
         * @memberof EDIDocument
         * @return  {void}
         */
        new (): EDIDocument;
        /**
         * @static
         * @private
         * @this EDIDocument
         * @memberof EDIDocument
         * @param   {System.Text.StringBuilder}    sb
         * @return  {void}
         */
    }
    declare var EDIDocument: EDIDocumentFunc;

    /**
     * @public
     * @class DocumentCreator
     */
    enum DocumentCreator {
        None = 0,
        EDIFileLoader = 1,
        EDIValidator = 2
    }

    /**
     * @static
     * @abstract
     * @class dgshsdfgwfscsggdfgdfdhfgbscsdsfg
     */
    interface dgshsdfgwfscsggdfgdfdhfgbscsdsfg {
    }
    interface dgshsdfgwfscsggdfgdfdhfgbscsdsfgFunc extends Function {
        prototype: dgshsdfgwfscsggdfgdfdhfgbscsdsfg;
        new (): dgshsdfgwfscsggdfgdfdhfgbscsdsfg;
        /**
         * @static
         * @public
         * @memberof dgshsdfgwfscsggdfgdfdhfgbscsdsfg
         * @constant
         * @default "B226184B-E2EA-4517-BC6F-7F2FB453985E"
         * @type string
         */
        yweyrwyreddcsd: string | null;
        /**
         * @static
         * @public
         * @memberof dgshsdfgwfscsggdfgdfdhfgbscsdsfg
         * @constant
         * @default "A32F3C74-5FA3-4270-BE9E-55B4CED97DA7"
         * @type string
         */
        ksdfsdfkkdkfkf: string | null;
        /**
         * @static
         * @public
         * @memberof dgshsdfgwfscsggdfgdfdhfgbscsdsfg
         * @constant
         * @default "DE698E33-45DE-40B7-BAC3-0BB2D8C663C1"
         * @type string
         */
        uweriddjjsdfjj: string | null;
        /**
         * @static
         * @public
         * @memberof dgshsdfgwfscsggdfgdfdhfgbscsdsfg
         * @constant
         * @default "F4DEF1BC-148E-45CF-8FA4-5E4F61310ACF"
         * @type string
         */
        mmdfmdlkfdkffk: string | null;
        /**
         * @static
         * @public
         * @memberof dgshsdfgwfscsggdfgdfdhfgbscsdsfg
         * @constant
         * @default "8EF5DC9C-C70D-4977-9F56-EDBD6E2A2D84"
         * @type string
         */
        ksddidskkdkdkd: string | null;
        /**
         * @static
         * @public
         * @memberof dgshsdfgwfscsggdfgdfdhfgbscsdsfg
         * @constant
         * @default "EE1F3E8F-3987-451E-9A93-D3699073623B"
         * @type string
         */
        kkdsdddddddddd: string | null;
    }
    declare var dgshsdfgwfscsggdfgdfdhfgbscsdsfg: dgshsdfgwfscsggdfgdfdhfgbscsdsfgFunc;

    /**
     * Represents the delimiters of X12 and EDIFACT standards
     *
     * @public
     * @class Delimiters
     */
    interface Delimiters {
        /**
         * Element terminator charactor
         *
         * @instance
         * @public
         * @memberof Delimiters
         * @function ElementTerminatorCharacter
         * @type number
         */
        ElementTerminatorCharacter: number;
        /**
         * Segment terminator charactor
         *
         * @instance
         * @public
         * @memberof Delimiters
         * @function SegmentTerminatorCharacter
         * @type number
         */
        SegmentTerminatorCharacter: number;
        /**
         * Composite element terminator character
         *
         * @instance
         * @public
         * @memberof Delimiters
         * @function CompositeTerminatorCharacter
         * @type number
         */
        CompositeTerminatorCharacter: number;
        /**
         * When false the delimiters for an EDI file could be be determined
         *
         * @instance
         * @public
         * @memberof Delimiters
         * @function UsingDefault
         * @type boolean
         */
        UsingDefault: boolean;
        /**
         * Repetition character
         *
         * @instance
         * @public
         * @memberof Delimiters
         * @function RepetitionCharacter
         * @type number
         */
        RepetitionCharacter: number;
        /**
         * Release character (EDIFACT)
         *
         * @instance
         * @public
         * @memberof Delimiters
         * @function ReleaseCharacter
         * @type number
         */
        ReleaseCharacter: number;
    }
    interface DelimitersFunc extends Function {
        prototype: Delimiters;
        /**
         * Creates a new Delimiters object
         *
         * @instance
         * @public
         * @this Delimiters
         * @memberof Delimiters
         * @return  {void}
         */
        new (): Delimiters;
        /**
         * @static
         * @this Delimiters
         * @memberof Delimiters
         * @param   {string}        fileData          
         * @param   {string}        trimCharacters
         * @return  {Delimiters}
         */
    }
    declare var Delimiters: DelimitersFunc;

    /**
     * @static
     * @abstract
     * @class DataTypeChecker
     */
    interface DataTypeChecker {
    }
    interface DataTypeCheckerFunc extends Function {
        prototype: DataTypeChecker;
        new (): DataTypeChecker;
        /**
         * @static
         * @public
         * @memberof DataTypeChecker
         * @default "^((\\d{2}((0[13578]|1[02])(0[1-9]|[12]\\d|3[01])|(0[13456789]|1[012])(0[1-9]|[12]\\d|30)|02(0[1-9]|1\\d|2[0-8])))|([02468][048]|[13579][26])0229)$"
         * @type string
         */
        DateYYMMDD: string | null;
        /**
         * @static
         * @public
         * @memberof DataTypeChecker
         * @default "^(((\\d{4}((0[13578]|1[02])(0[1-9]|[12]\\d|3[01])|(0[13456789]|1[012])(0[1-9]|[12]\\d|30)|02(0[1-9]|1\\d|2[0-8])))|((\\d{2}[02468][048]|\\d{2}[13579][26]))0229)){0,8}$"
         * @type string
         */
        DateCCYYMMDD: string | null;
        /**
         * @static
         * @public
         * @memberof DataTypeChecker
         * @default "^([01]\\d|2[0123])([0-5]\\d){1}$"
         * @type string
         */
        TimeHHMM: string | null;
        /**
         * @static
         * @public
         * @memberof DataTypeChecker
         * @default "^([0-1][0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$"
         * @type string
         */
        TimeHHMMSS: string | null;
        /**
         * @static
         * @public
         * @memberof DataTypeChecker
         * @default "^([0-1][0-9]|2[0-3])([0-5][0-9])([0-5][0-9])([0-9])$"
         * @type string
         */
        TimeHHMMSSD: string | null;
        /**
         * @static
         * @public
         * @memberof DataTypeChecker
         * @default "^([0-1][0-9]|2[0-3])([0-5][0-9])([0-5][0-9])([0-9][0-9])$"
         * @type string
         */
        TimeHHMMSSDD: string | null;
        /**
         * @static
         * @public
         * @this DataTypeChecker
         * @memberof DataTypeChecker
         * @param   {string}     strNumber
         * @return  {boolean}
         */
        isWholeNumber(strNumber: string | null): boolean;
        /**
         * @static
         * @public
         * @this DataTypeChecker
         * @memberof DataTypeChecker
         * @param   {string}     strNumber
         * @return  {boolean}
         */
        isNegativeWholeNumber(strNumber: string | null): boolean;
        /**
         * @static
         * @public
         * @this DataTypeChecker
         * @memberof DataTypeChecker
         * @param   {string}     strNumber
         * @return  {boolean}
         */
        isRealNumber(strNumber: string | null): boolean;
        /**
         * @static
         * @public
         * @this DataTypeChecker
         * @memberof DataTypeChecker
         * @param   {string}     strDate
         * @return  {boolean}
         */
        isValidDate(strDate: string | null): boolean;
        /**
         * @static
         * @public
         * @this DataTypeChecker
         * @memberof DataTypeChecker
         * @param   {string}     strDate
         * @return  {boolean}
         */
        isValidTime(strDate: string | null): boolean;
        /**
         * @static
         * @public
         * @this DataTypeChecker
         * @memberof DataTypeChecker
         * @param   {string}     strNumber
         * @return  {boolean}
         */
        isInteger(strNumber: string | null): boolean;
        /**
         * @static
         * @public
         * @this DataTypeChecker
         * @memberof DataTypeChecker
         * @param   {string}     strToCheck
         * @return  {boolean}
         */
        isAlpha(strToCheck: string | null): boolean;
        /**
         * @static
         * @public
         * @this DataTypeChecker
         * @memberof DataTypeChecker
         * @param   {string}     strToCheck
         * @return  {boolean}
         */
        isAlphaNumeric(strToCheck: string | null): boolean;
    }
    declare var DataTypeChecker: DataTypeCheckerFunc;

    /**
     * A DataSegment Object
     *
     * @public
     * @class LightWeightSegment
     */
    interface LightWeightSegment {
        /**
         * @instance
         * @public
         * @memberof LightWeightSegment
         * @function SegmentLoop
         * @type LightWeightLoop
         */
        SegmentLoop: LightWeightLoop | null;
        /**
         * Get/Set the actual position of this segment in an EDIDocument
         *
         * @instance
         * @public
         * @memberof LightWeightSegment
         * @function OrdinalNumber
         * @type number
         */
        OrdinalNumber: number;
        /**
         * Gets element values
         *
         * @instance
         * @public
         * @this LightWeightSegment
         * @memberof LightWeightSegment
         * @param   {number}    index    index of element
         * @return  {string}
         */
        getItem(index: number): string;
        /**
         * Get/Set the name of this segment
         *
         * @instance
         * @public
         * @memberof LightWeightSegment
         * @function Name
         * @type string
         */
        Name: string | null;
        /**
         * Get/Set a list of DataElements
         *
         * @instance
         * @public
         * @memberof LightWeightSegment
         * @function Elements
         * @type System.Collections.Generic.List$1
         */
        Elements: System.Collections.Generic.List$1<LightWeightElement> | null;
        /**
         * Returns the last data element in this segment
         *
         * @instance
         * @public
         * @readonly
         * @memberof LightWeightSegment
         * @function LastElement
         * @type LightWeightElement
         */
        LastElement: LightWeightElement | null;
        /**
         * Returns the first data element in this segment
         *
         * @instance
         * @public
         * @readonly
         * @memberof LightWeightSegment
         * @function FirstElement
         * @type LightWeightElement
         */
        FirstElement: LightWeightElement | null;
        /**
         * Adds a new element
         *
         * @instance
         * @public
         * @this LightWeightSegment
         * @memberof LightWeightSegment
         * @param   {string}    val
         * @return  {void}
         */
        addElement(val: string | null): void;
        /**
         * Checks whether an element exist in the segment
         *
         * @instance
         * @public
         * @this LightWeightSegment
         * @memberof LightWeightSegment
         * @param   {number}     elementIndex    index of the element
         * @return  {boolean}                    true if element exists, false otherwise
         */
        containsElement(elementIndex: number): boolean;
        /**
         * Returns a string representation of this DataSegment
         *
         * @instance
         * @public
         * @override
         * @this LightWeightSegment
         * @memberof LightWeightSegment
         * @return  {string}        string representation of this DataSegment
         */
        toString(): string | null;
        /**
         * @instance
         * @public
         * @this LightWeightSegment
         * @memberof LightWeightSegment
         * @param   {Delimiters}    delimiters
         * @return  {string}
         */
        toEDIString(delimiters: Delimiters | null): string | null;
    }
    interface LightWeightSegmentFunc extends Function {
        prototype: LightWeightSegment;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this LightWeightSegment
         * @memberof LightWeightSegment
         * @return  {void}
         */
        new (): LightWeightSegment;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this LightWeightSegment
         * @memberof LightWeightSegment
         * @return  {void}
         */
        ctor: {
            new (): LightWeightSegment
        };
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this LightWeightSegment
         * @memberof LightWeightSegment
         * @param   {string}    segmentName    Name of the segment.
         * @return  {void}
         */
        $ctor1: {
            new (segmentName: string | null): LightWeightSegment
        };
    }
    declare var LightWeightSegment: LightWeightSegmentFunc;

    /**
     * Represents a lightweight data element
     *
     * @public
     * @class LightWeightElement
     */
    interface LightWeightElement {
        /**
         * Returns whether this is a composite data element
         *
         * @instance
         * @public
         * @memberof LightWeightElement
         * @function Composite
         * @type boolean
         */
        Composite: boolean;
        /**
         * Get/Set the position of this DataElement in the containing DataSegment
         *
         * @instance
         * @public
         * @memberof LightWeightElement
         * @function ElementNumber
         * @type number
         */
        ElementNumber: number;
        /**
         * @instance
         * @public
         * @readonly
         * @memberof LightWeightElement
         * @function HasRepeatingCompositeElements
         * @type boolean
         */
        HasRepeatingCompositeElements: boolean;
        /**
         * @instance
         * @public
         * @readonly
         * @memberof LightWeightElement
         * @function HasRepeatingElements
         * @type boolean
         */
        HasRepeatingElements: boolean;
        /**
         * Get/Set the child elements if this is a composite data element
         *
         * @instance
         * @public
         * @memberof LightWeightElement
         * @function Elements
         * @type System.Collections.Generic.List$1
         */
        Elements: System.Collections.Generic.List$1<LightWeightElement> | null;
        /**
         * Gets or sets the repeating composite elements.
         *
         * @instance
         * @public
         * @memberof LightWeightElement
         * @function RepeatingCompositeElements
         * @type System.Collections.Generic.List$1
         */
        RepeatingCompositeElements: System.Collections.Generic.List$1<System.Collections.Generic.List$1<LightWeightElement>> | null;
        /**
         * Gets or sets the repeating elements values.  This is only set when this element does not represent a composite element
         *
         * @instance
         * @public
         * @memberof LightWeightElement
         * @function RepeatingElementsValues
         * @type System.Collections.Generic.List$1
         */
        RepeatingElementsValues: System.Collections.Generic.List$1<string> | null;
        /**
         * Get/Set the actual data in DataElement
         *
         * @instance
         * @public
         * @memberof LightWeightElement
         * @function DataValue
         * @type string
         */
        DataValue: string | null;
        /**
         * Adds a composite element
         *
         * @instance
         * @public
         * @this LightWeightElement
         * @memberof LightWeightElement
         * @param   {string}    elementValue
         * @return  {void}
         */
        addCompositeElement(elementValue: string | null): void;
        /**
         * Checks whether there is data in DataElement
         *
         * @instance
         * @public
         * @this LightWeightElement
         * @memberof LightWeightElement
         * @return  {boolean}
         */
        containsData(): boolean;
        /**
         * Checks whether there is data in DataElement
         *
         * @instance
         * @public
         * @this LightWeightElement
         * @memberof LightWeightElement
         * @return  {boolean}        true is there is no data, false otherwise
         */
        containsNoData(): boolean;
        /**
         * Returns a {@link } that represents this instance.
         *
         * @instance
         * @public
         * @override
         * @this LightWeightElement
         * @memberof LightWeightElement
         * @return  {string}        A {@link } that represents this instance.
         */
        toString(): string | null;
    }
    interface LightWeightElementFunc extends Function {
        prototype: LightWeightElement;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this LightWeightElement
         * @memberof LightWeightElement
         * @return  {void}
         */
        new (): LightWeightElement;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this LightWeightElement
         * @memberof LightWeightElement
         * @return  {void}
         */
        ctor: {
            new (): LightWeightElement
        };
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this LightWeightElement
         * @memberof LightWeightElement
         * @param   {string}    elementValue    The element value.
         * @return  {void}
         */
        $ctor2: {
            new (elementValue: string | null): LightWeightElement
        };
        /**
         * Creates a new LightWeigthElement object
         *
         * @instance
         * @public
         * @this LightWeightElement
         * @memberof LightWeightElement
         * @param   {boolean}    composite    true if this is a composite dataelement, false otherwise
         * @return  {void}
         */
        $ctor1: {
            new (composite: boolean): LightWeightElement
        };
    }
    declare var LightWeightElement: LightWeightElementFunc;

    /**
     * @class Constants
     */
    interface Constants {
    }
    interface ConstantsFunc extends Function {
        prototype: Constants;
        new (): Constants;
        /**
         * @static
         * @public
         * @memberof Constants
         * @constant
         * @default 400
         * @type number
         */
        ReaderWaitTime: number;
    }
    declare var Constants: ConstantsFunc;

    /**
     * @static
     * @abstract
     * @class CommonStrings
     */
    interface CommonStrings {
    }
    interface CommonStringsFunc extends Function {
        prototype: CommonStrings;
        new (): CommonStrings;
        /**
         * @static
         * @public
         * @memberof CommonStrings
         * @constant
         * @default "EQ"
         * @type string
         */
        EQ: string | null;
        /**
         * @static
         * @public
         * @memberof CommonStrings
         * @constant
         * @default "NE"
         * @type string
         */
        NE: string | null;
        /**
         * @static
         * @public
         * @memberof CommonStrings
         * @constant
         * @default "GT"
         * @type string
         */
        GT: string | null;
        /**
         * @static
         * @public
         * @memberof CommonStrings
         * @constant
         * @default "GE"
         * @type string
         */
        GE: string | null;
        /**
         * @static
         * @public
         * @memberof CommonStrings
         * @constant
         * @default "LT"
         * @type string
         */
        LT: string | null;
        /**
         * @static
         * @public
         * @memberof CommonStrings
         * @constant
         * @default "LE"
         * @type string
         */
        LE: string | null;
        /**
         * @static
         * @public
         * @memberof CommonStrings
         * @constant
         * @default "EXISTS"
         * @type string
         */
        EXISTS: string | null;
        /**
         * @static
         * @public
         * @memberof CommonStrings
         * @constant
         * @default "NEXIST"
         * @type string
         */
        NEXIST: string | null;
        /**
         * @static
         * @public
         * @memberof CommonStrings
         * @constant
         * @default "USAGE"
         * @type string
         */
        USAGE: string | null;
        /**
         * @static
         * @public
         * @memberof CommonStrings
         * @constant
         * @default "LOCALCODE"
         * @type string
         */
        LOCALCODE: string | null;
        /**
         * @static
         * @public
         * @memberof CommonStrings
         * @constant
         * @default "Maximum usage reached. Please visit www.rdpcrystal.com/pricing"
         * @type string
         */
        EXPIRED: string | null;
        /**
         * @static
         * @public
         * @memberof CommonStrings
         * @constant
         * @default "You cannot save with the trial version of EDI Rules Creator"
         * @type string
         */
        CANNOTSAVE: string | null;
    }
    declare var CommonStrings: CommonStringsFunc;

    /**
     * Represents a set of codes that a DataElement can contain
     *
     * @public
     * @class CodeList
     */
    interface CodeList {
        /**
         * Get/Set whether this is an internal codelist (codes included in the rules files) or external (codes are in their separate file)
         *
         * @instance
         * @public
         * @memberof CodeList
         * @function ExternalCodeList
         * @type boolean
         */
        ExternalCodeList: boolean;
        /**
         * Codes that a DataElement can contain
         *
         * @instance
         * @public
         * @memberof CodeList
         * @function Codes
         * @type System.Collections.Generic.Dictionary$2
         */
        Codes: System.Collections.Generic.Dictionary$2<string,Code> | null;
        /**
         * Name of code list
         *
         * @instance
         * @public
         * @memberof CodeList
         * @function Name
         * @type string
         */
        Name: string | null;
        /**
         * Get/Set the character that delimits code list values from their description
         *
         * @instance
         * @public
         * @memberof CodeList
         * @function ExternalDelimiter
         * @type number
         */
        ExternalDelimiter: number;
        /**
         * Get/Set the external file that contains code list data
         *
         * @instance
         * @public
         * @memberof CodeList
         * @function ExternalFilename
         * @type string
         */
        ExternalFilename: string | null;
    }
    interface CodeListFunc extends Function {
        prototype: CodeList;
        /**
         * Create a new CodeList object
         *
         * @instance
         * @public
         * @this CodeList
         * @memberof CodeList
         * @return  {void}
         */
        new (): CodeList;
    }
    declare var CodeList: CodeListFunc;

    /**
     * Represents a CodeCondition
     *
     * @public
     * @class CodeConditionEventArgs
     * @augments System.Object
     */
    interface CodeConditionEventArgs {
        /**
         * The CodeCondition being evaluated
         *
         * @instance
         * @public
         * @memberof CodeConditionEventArgs
         * @function CodeCondition
         * @type CodeCondition
         */
        CodeCondition: CodeCondition | null;
        /**
         * All the Loops and Segments encountered so far
         *
         * @instance
         * @public
         * @memberof CodeConditionEventArgs
         * @function DataLoop
         * @type LightWeightLoop
         */
        DataLoop: LightWeightLoop | null;
        /**
         * The schema of the current segment being validated
         *
         * @instance
         * @public
         * @memberof CodeConditionEventArgs
         * @function CurrentSegmentSchema
         * @type DataSegment
         */
        CurrentSegmentSchema: DataSegment | null;
        /**
         * The current segment being evaluated
         *
         * @instance
         * @public
         * @memberof CodeConditionEventArgs
         * @function CurrentSegment
         * @type LightWeightSegment
         */
        CurrentSegment: LightWeightSegment | null;
        /**
         * The current loop being evaluated
         *
         * @instance
         * @public
         * @memberof CodeConditionEventArgs
         * @function CurrentLoop
         * @type Loop
         */
        CurrentLoop: Loop | null;
        /**
         * Segments found in the current hierarchies
         *
         * @instance
         * @public
         * @memberof CodeConditionEventArgs
         * @function FoundSegments
         * @type FoundSegmentCollection
         */
        FoundSegments: FoundSegmentCollection | null;
        /**
         * Elements found in the current segments.  This only applies to SELF Rules
         *
         * @instance
         * @public
         * @memberof CodeConditionEventArgs
         * @function FoundElements
         * @type System.Collections.Generic.Dictionary$2
         */
        FoundElements: System.Collections.Generic.Dictionary$2<number,string> | null;
        /**
         * Set whether this condition is true or false
         *
         * @instance
         * @public
         * @memberof CodeConditionEventArgs
         * @function ConditionValid
         * @type boolean
         */
        ConditionValid: boolean;
    }
    interface CodeConditionEventArgsFunc extends Function {
        prototype: CodeConditionEventArgs;
        /**
         * Creates a new CodeCondition object
         *
         * @instance
         * @public
         * @this CodeConditionEventArgs
         * @memberof CodeConditionEventArgs
         * @return  {void}
         */
        new (): CodeConditionEventArgs;
    }
    declare var CodeConditionEventArgs: CodeConditionEventArgsFunc;

    /**
     * @public
     * @class Node
     */
    interface Node {
        /**
         * @instance
         * @public
         * @memberof Node
         * @function Text
         * @type string
         */
        Text: string | null;
        /**
         * Used to assign a name to this class.  It's faster to check what type this class is with a string name rather than the 'is' operator
         *
         * @instance
         * @public
         * @memberof Node
         * @function Name
         * @type string
         */
        Name: string | null;
        /**
         * Depth is used only for printing out data to the console for debugging
         *
         * @instance
         * @public
         * @memberof Node
         * @function Depth
         * @type number
         */
        Depth: number;
        /**
         * @instance
         * @public
         * @override
         * @this Node
         * @memberof Node
         * @return  {string}
         */
        toString(): string | null;
        /**
         * @instance
         * @public
         * @this Node
         * @memberof Node
         * @return  {string}
         */
        toRuleString(): string | null;
    }
    interface NodeFunc extends Function {
        prototype: Node;
        /**
         * @instance
         * @public
         * @this Node
         * @memberof Node
         * @param   {string}    text     
         * @param   {number}    depth
         * @return  {void}
         */
        new (text: string | null, depth: number): Node;
    }
    declare var Node: NodeFunc;

    /**
     * Class used by EDIRulesCreator to create a code object
     *
     * @public
     * @class Code
     */
    interface Code {
        /**
         * Get/Set the value
         *
         * @instance
         * @public
         * @memberof Code
         * @function Value
         * @type string
         */
        Value: string | null;
        /**
         * Get/Set the description
         *
         * @instance
         * @public
         * @memberof Code
         * @function Description
         * @type string
         */
        Description: string | null;
    }
    interface CodeFunc extends Function {
        prototype: Code;
        /**
         * Create a new Code object
         *
         * @instance
         * @public
         * @this Code
         * @memberof Code
         * @return  {void}
         */
        new (): Code;
    }
    declare var Code: CodeFunc;

    /**
     * The name of the segment to add to the Errors/Warnings 'ClosestSegment' property whenever errors or warnings are encountered
     *
     * @public
     * @class ClosestSegmentToError
     */
    interface ClosestSegmentToError {
        /**
         * Name of segment
         *
         * @instance
         * @public
         * @memberof ClosestSegmentToError
         * @function Name
         * @type string
         */
        Name: string | null;
        /**
         * Element index to compare
         *
         * @instance
         * @public
         * @memberof ClosestSegmentToError
         * @function ElementIndex
         * @type number
         */
        ElementIndex: number;
        /**
         * Element value to compare
         *
         * @instance
         * @public
         * @memberof ClosestSegmentToError
         * @function CompareValue
         * @type string
         */
        CompareValue: string | null;
        /**
         * List of segments that if encountered while trying to find the closest segment will cause the search to stop
         *
         * @instance
         * @public
         * @memberof ClosestSegmentToError
         * @function StopSegments
         * @type System.Collections.Generic.List$1
         */
        StopSegments: System.Collections.Generic.List$1<string> | null;
        /**
         * Adds a stop segments
         *
         * @instance
         * @public
         * @this ClosestSegmentToError
         * @memberof ClosestSegmentToError
         * @param   {string}    segmentName
         * @return  {void}
         */
        addStopSegment(segmentName: string | null): void;
        /**
         * Removes a stop segment
         *
         * @instance
         * @public
         * @this ClosestSegmentToError
         * @memberof ClosestSegmentToError
         * @param   {string}    segmentName
         * @return  {void}
         */
        removeStopSegment(segmentName: string | null): void;
    }
    interface ClosestSegmentToErrorFunc extends Function {
        prototype: ClosestSegmentToError;
        /**
         * Creates a new ClosestSegmentToError
         *
         * @instance
         * @public
         * @this ClosestSegmentToError
         * @memberof ClosestSegmentToError
         * @return  {void}
         */
        new (): ClosestSegmentToError;
    }
    declare var ClosestSegmentToError: ClosestSegmentToErrorFunc;

    /**
     * Regularly used characters within library
     *
     * @static
     * @abstract
     * @class Characters
     */
    interface Characters {
    }
    interface CharactersFunc extends Function {
        prototype: Characters;
        new (): Characters;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "^"
         * @type number
         */
        CARRET: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "{"
         * @type number
         */
        LEFT_CURLY_BRACES: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "{"
         * @type string
         */
        LEFT_CURLY_BRACES_STR: string | null;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "}"
         * @type number
         */
        RIGHT_CURLY_BRACES: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "}"
         * @type string
         */
        RIGHT_CURLY_BRACES_STR: string | null;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "["
         * @type number
         */
        LEFT_BRACKET: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "]"
         * @type number
         */
        RIGHT_BRACKET: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default ":"
         * @type number
         */
        SEMICOLON: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "*"
         * @type number
         */
        ASTERISK: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "*"
         * @type string
         */
        ASTERISK_STR: string | null;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default ","
         * @type number
         */
        COMMA: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "="
         * @type number
         */
        EQUAL: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "~"
         * @type number
         */
        TILDA: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "."
         * @type number
         */
        DOT: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "@"
         * @type number
         */
        ATSIGN: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "#"
         * @type number
         */
        NUMBER_SIGN: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "R"
         * @type number
         */
        REQUIREMENT_CHAR: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "P"
         * @type number
         */
        PAIR_CHAR: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "C"
         * @type number
         */
        CONDITIONAL_CHAR: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "L"
         * @type number
         */
        LIST_CONDITIONAL_CHAR: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "E"
         * @type number
         */
        EXCLUSION_CONDITIONAL_CHAR: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "!"
         * @type number
         */
        EXCLAMATION_CHAR: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default " "
         * @type number
         */
        SPACE_CHAR: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default " "
         * @type string
         */
        SPACE_STR: string | null;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "\n"
         * @type number
         */
        RETURN_CHAR: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "\r"
         * @type number
         */
        CARRIAGE_RETURN: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "C"
         * @type number
         */
        COMPOSITE_CHAR: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "S"
         * @type number
         */
        EDIFACT_SERVICE_CHAR: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "+"
         * @type number
         */
        PLUS: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "/"
         * @type number
         */
        FORWARD_SLASH: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "-"
         * @type number
         */
        DASH: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "-"
         * @type string
         */
        DASH_STR: string | null;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "'"
         * @type number
         */
        APOSTROPHE: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "M"
         * @type string
         */
        MANDATORY: string | null;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "O"
         * @type string
         */
        OPTIONAL: string | null;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "N"
         * @type string
         */
        NOTUSED: string | null;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "X"
         * @type string
         */
        DEPENDENT: string | null;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "M"
         * @type number
         */
        USAGE_MANDATORY: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "O"
         * @type number
         */
        USAGE_OPTIONAL: number;
        /**
         * @static
         * @public
         * @memberof Characters
         * @constant
         * @default "N"
         * @type number
         */
        USAGE_NOTUSED: number;
    }
    declare var Characters: CharactersFunc;

    /**
     * Responsible for generating an 999 Acknowledgement EDI File
     *
     * @public
     * @class Ack999Generator
     */
    interface Ack999Generator {
        /**
         * Segment and element delimiters
         *
         * @instance
         * @public
         * @memberof Ack999Generator
         * @function Delimiters
         * @type Delimiters
         */
        Delimiters: Delimiters | null;
        /**
         * String to insert between segments for formatting
         *
         * @instance
         * @public
         * @memberof Ack999Generator
         * @function SegmentSeparatorString
         * @type string
         */
        SegmentSeparatorString: string | null;
        /**
         * Char used to pad empty spaces
         *
         * @instance
         * @public
         * @memberof Ack999Generator
         * @function PaddingChar
         * @type number
         */
        PaddingChar: number;
        /**
         * Get/set the interchange control number
         *
         * @instance
         * @public
         * @memberof Ack999Generator
         * @function InterchangeControlNumber
         * @type number
         */
        InterchangeControlNumber: number;
        /**
         * Get/set the group control number
         *
         * @instance
         * @public
         * @memberof Ack999Generator
         * @function GroupControlNumber
         * @type number
         */
        GroupControlNumber: number;
        /**
         * Get/set the Transaction Set Control Number
         *
         * @instance
         * @public
         * @memberof Ack999Generator
         * @function TransactionSetControlNumber
         * @type number
         */
        TransactionSetControlNumber: number;
        /**
         * Generates a 999 Acknowledgement EDI file.
         *
         * @instance
         * @public
         * @this Ack999Generator
         * @memberof Ack999Generator
         * @param   {EDIValidator}    ediValidator    The edivalidator
         * @return  {EDIDocument}
         */
        generate(ediValidator: EDIValidator | null): EDIDocument | null;
    }
    interface Ack999GeneratorFunc extends Function {
        prototype: Ack999Generator;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this Ack999Generator
         * @memberof Ack999Generator
         * @return  {void}
         */
        new (): Ack999Generator;
    }
    declare var Ack999Generator: Ack999GeneratorFunc;

    /**
     * Reader that reads and loads EDI rules from an EDI file
     *
     * @public
     * @class EDIRulesReader
     */
    interface EDIRulesReader {
        /**
         * Data contained in the SAMPLE DATA section of the EDI File
         *
         * @instance
         * @public
         * @memberof EDIRulesReader
         * @function SampleData
         * @type System.Collections.Generic.List$1
         */
        SampleData: System.Collections.Generic.List$1<string> | null;
        /**
         * Gets a value indicating whether this {@link } is parsed.
         *
         * @instance
         * @public
         * @memberof EDIRulesReader
         * @function Parsed
         * @type boolean
         */
        Parsed: boolean;
        /**
         * Gets or sets the EDI rules file data. Each line must end with a return character
         *
         * @instance
         * @public
         * @memberof EDIRulesReader
         * @function EDIRulesFileData
         * @type string
         */
        EDIRulesFileData: string | null;
        /**
         * Occurs when [progress changed].
         *
         * @instance
         * @public
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @function addProgressChanged
         * @param   {EDIRulesReader.GeneralEvent}    value
         * @return  {void}
         */
        addProgressChanged(value: {(progress: number): void} | null): void;
        /**
         * Occurs when [progress changed].
         *
         * @instance
         * @public
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @function removeProgressChanged
         * @param   {EDIRulesReader.GeneralEvent}    value
         * @return  {void}
         */
        removeProgressChanged(value: {(progress: number): void} | null): void;
        /**
         * Occurs when [on error occurred].
         *
         * @instance
         * @public
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @function addOnErrorOccurred
         * @param   {EDIRulesReader.ErrorEvent}    value
         * @return  {void}
         */
        addOnErrorOccurred(value: {(sender: any, e: EDIRulesReaderEventArg): void} | null): void;
        /**
         * Occurs when [on error occurred].
         *
         * @instance
         * @public
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @function removeOnErrorOccurred
         * @param   {EDIRulesReader.ErrorEvent}    value
         * @return  {void}
         */
        removeOnErrorOccurred(value: {(sender: any, e: EDIRulesReaderEventArg): void} | null): void;
        /**
         * Gets the descriptions of loops
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIRulesReader
         * @function LoopDescriptions
         * @type System.Collections.Generic.Dictionary$2
         */
        LoopDescriptions: System.Collections.Generic.Dictionary$2<string,string> | null;
        /**
         * Gets the number of loops created.
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIRulesReader
         * @function NumberOfLoopsCreated
         * @type number
         */
        NumberOfLoopsCreated: number;
        /**
         * Gets the element counter displays.
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIRulesReader
         * @function ElementCounterDisplays
         * @type System.Collections.Generic.List$1
         */
        ElementCounterDisplays: System.Collections.Generic.List$1<ElementCounterDisplay> | null;
        /**
         * Gets the summaries.
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIRulesReader
         * @function Summaries
         * @type System.Collections.Generic.List$1
         */
        Summaries: System.Collections.Generic.List$1<SummaryDisplay> | null;
        /**
         * A collection of all element equality read in from EDI rules file
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIRulesReader
         * @function ElementEqualities
         * @type System.Collections.Generic.List$1
         */
        ElementEqualities: System.Collections.Generic.List$1<ElementEqualityDisplay> | null;
        /**
         * A collection of all rules read in from EDI rules file
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIRulesReader
         * @function Rules
         * @type System.Collections.Generic.List$1
         */
        Rules: System.Collections.Generic.List$1<RuleDisplay> | null;
        /**
         * A collection of all elements read in from EDI rules file
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIRulesReader
         * @function Elements
         * @type System.Collections.Generic.Dictionary$2
         */
        Elements: System.Collections.Generic.Dictionary$2<number,Element> | null;
        /**
         * A collection of all segments read in from EDI rules file
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIRulesReader
         * @function Segments
         * @type System.Collections.Generic.Dictionary$2
         */
        Segments: System.Collections.Generic.Dictionary$2<string,Segment> | null;
        /**
         * A collection of file property values specified in the rules file
         *
         * @instance
         * @public
         * @memberof EDIRulesReader
         * @function RuleFileData
         * @type System.Collections.Generic.Dictionary$2
         */
        RuleFileData: System.Collections.Generic.Dictionary$2<string,string> | null;
        /**
         * A collection of all composite segments read in from EDI rules file
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIRulesReader
         * @function CompositesSegments
         * @type System.Collections.Generic.Dictionary$2
         */
        CompositesSegments: System.Collections.Generic.Dictionary$2<string,Segment> | null;
        /**
         * A collection of all element codes read in from EDI rules file
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIRulesReader
         * @function ElementCodes
         * @type System.Collections.Generic.Dictionary$2
         */
        ElementCodes: System.Collections.Generic.Dictionary$2<number,ElementCodeList> | null;
        /**
         * A collection of all segments schemas read in from EDI rules file
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIRulesReader
         * @function SegmentSchemas
         * @type System.Collections.Generic.Dictionary$2
         */
        SegmentSchemas: System.Collections.Generic.Dictionary$2<number,SegmentSchema> | null;
        /**
         * A collection of all custom file data
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIRulesReader
         * @function FileData
         * @type System.Collections.Generic.Dictionary$2
         */
        FileData: System.Collections.Generic.Dictionary$2<string,string> | null;
        /**
         * A collection of all codelists read in from EDI rules file
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIRulesReader
         * @function CodeLists
         * @type System.Collections.Generic.Dictionary$2
         */
        CodeLists: System.Collections.Generic.Dictionary$2<string,CodeList> | null;
        /**
         * Gets the element formats.
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIRulesReader
         * @function ElementFormats
         * @type System.Collections.Generic.Dictionary$2
         */
        ElementFormats: System.Collections.Generic.Dictionary$2<string,string> | null;
        /**
         * The complete schema of the EDI standard read from the EDI rules file
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIRulesReader
         * @function Schema
         * @type Loop
         */
        Schema: Loop | null;
        /**
         * @instance
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {string}    loopName
         * @return  {string}
         */
        /**
         * @instance
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {DataSegment}    segment          
         * @param   {number}         elementNumber
         * @return  {string}
         */
        /**
         * @instance
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {DataSegment}    segment             
         * @param   {number}         elementNumber       
         * @param   {number}         compositeElement
         * @return  {string}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {number}    elementNumber       
         * @param   {number}    segmentOrdNumber    
         * @param   {number}    elementOrdNumber
         * @return  {string}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {number}    elementNumber          
         * @param   {number}    segmentOrdNumber       
         * @param   {number}    elementOrdNumber       
         * @param   {number}    subElementOrdNumber
         * @return  {string}
         */
        /**
         * @instance
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {DataSegment}    segment
         * @return  {string}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @return  {string}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {string}    message
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {LoopSchema}    parentLoopSchema
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {number}    percentage
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {System.Func}    action
         * @return  {void}
         */
        /**
         * Resets this instance.
         *
         * @instance
         * @public
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @return  {void}
         */
        reset(): void;
        /**
         * Parses a rule file and loads its contents
         *
         * @instance
         * @public
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @return  {void}
         */
        parse(): void;
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {string}     line       
         * @param   {string}     message
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {LoopSchema}    ls        
         * @param   {Loop}          parent
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {DataSegment}    segment            
         * @param   {number}         segmentOridinal
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {DataElement}    element            
         * @param   {number}         segmentOridinal    
         * @param   {number}         elementOrdinal
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {DataElement}    element                    
         * @param   {number}         segmentOridinal            
         * @param   {number}         elementOrdinal             
         * @param   {number}         compositeElementOrdinal
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {DataElement}    element            
         * @param   {number}         segmentOridinal    
         * @param   {number}         elementOrdinal
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {DataElement}    element                    
         * @param   {number}         segmentOridinal            
         * @param   {number}         elementOrdinal             
         * @param   {number}         compositeElementOrdinal
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {LoopSchema}    loopSchema    
         * @param   {Loop}          loop
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {DataSegment}    segment
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {number}                                  elementNumber       
         * @param   {number}                                  segmentOrdNumber    
         * @param   {number}                                  elementOrdNumber    
         * @param   {System.String}                           codeListName        
         * @param   {CodeList}                                list
         * @return  {System.Collections.Generic.HashSet$1}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {number}                                  elementNumber          
         * @param   {number}                                  segmentOrdNumber       
         * @param   {number}                                  elementOrdNumber       
         * @param   {number}                                  subElementOrdNumber    
         * @param   {System.String}                           codeListName           
         * @param   {CodeList}                                list
         * @return  {System.Collections.Generic.HashSet$1}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {number}     elementNumber       
         * @param   {number}     segmentOrdNumber    
         * @param   {number}     elementOrdNumber
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {number}     elementNumber         
         * @param   {number}     segmentOrdNumber      
         * @param   {number}     elementOrdNumber      
         * @param   {number}     compositeOrdNumber
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {number}                               elementNumber       
         * @param   {number}                               segmentOrdNumber    
         * @param   {number}                               elementOrdNumber
         * @return  {System.Collections.Generic.List$1}
         */
        /**
         * @instance
         * @private
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @param   {number}                               elementNumber         
         * @param   {number}                               segmentOrdNumber      
         * @param   {number}                               elementOrdNumber      
         * @param   {number}                               compositeOrdNumber
         * @return  {System.Collections.Generic.List$1}
         */
    }
    interface EDIRulesReaderFunc extends Function {
        prototype: EDIRulesReader;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this EDIRulesReader
         * @memberof EDIRulesReader
         * @return  {void}
         */
        new (): EDIRulesReader;
    }
    declare var EDIRulesReader: EDIRulesReaderFunc;

    /**
     * Represents an general error that may occur while parsing an EDI rules file
     *
     * @public
     * @class EDIRulesReaderEventArg
     * @augments System.Object
     */
    interface EDIRulesReaderEventArg {
        /**
         * Line in the EDI rules file
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIRulesReaderEventArg
         * @function LineText
         * @type string
         */
        LineText: string | null;
        /**
         * General error message
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIRulesReaderEventArg
         * @function Message
         * @type string
         */
        Message: string | null;
    }
    interface EDIRulesReaderEventArgFunc extends Function {
        prototype: EDIRulesReaderEventArg;
    }
    declare var EDIRulesReaderEventArg: EDIRulesReaderEventArgFunc;

    /**
     * Represents the source of the EDI data to validate
     *
     * @public
     * @class EDISource
     */
    enum EDISource {
        DataString = 0,
        File = 1
    }

    /**
     * Represents different EDI messages
     *
     * @public
     * @class EDIValidationMessage
     */
    enum EDIValidationMessage {
        None = 0,
        CompositeElementMissing = 1,
        CompositeElementDataFormatInvalid = 2,
        CompositeElementNotUsed = 3,
        CompositeElementRecommended = 4,
        CompositeElementNotRecommended = 5,
        CompositeElementLessThanMinimumLength = 6,
        CompositeElementGreaterThanMaximumLength = 7,
        CompositeElementHasWrongValue = 8,
        CompositeElementValueAlreadyEntered = 9,
        DuplicateSegment = 10,
        DuplicateLoop = 11,
        ElementHasWrongValue = 12,
        InternalElementHasWrongValue = 13,
        ElementLessThanMinimumLength = 14,
        ElementGreaterThanMaximumLength = 15,
        ElementValueAlreadyEntered = 16,
        ElementDataFormatInvalid = 17,
        ElementNotUsed = 18,
        ElementRecommended = 19,
        ElementNotRecommended = 20,
        ElementMissing = 21,
        EmptyTrailingElements = 22,
        EmptyTrailingCompositeElement = 23,
        ExtraElementFound = 24,
        ExtraCompositeElementFound = 25,
        ExtraDataAtEndOfFile = 26,
        LoopMissing = 27,
        LoopNotUsed = 28,
        LoopNotRecommended = 29,
        LoopRecommended = 30,
        MalformedSegment = 31,
        InvalidIntegerValue = 32,
        InvalidDateValue = 33,
        InvalidTimeValue = 34,
        InvalidAlphabeticValue = 35,
        InvalidPositiveNumberValue = 36,
        InvalidNegativeNumberValue = 37,
        InvalidDecimalValue = 38,
        SegmentNotRecommended = 39,
        SegmentNotUsed = 40,
        SegmentNotInDictionary = 41,
        SegmentRecommended = 42,
        SegmentMissing = 43,
        SummaryValueMismatch = 44,
        UnrecognizedLoop = 45,
        UnrecognizedSegment = 46,
        IllegalCharactorInFile = 47,
        MalformedEDIFile = 48,
        MaximumErrorLimitReached = 49,
        UnexpectedError = 50
    }

    /**
     * @public
     * @class FileOperationStatus
     */
    enum FileOperationStatus {
        NotSet = 0,
        Success = 1,
        Failure = 2
    }

    /**
     * FileOperationCompletedEventArgs
     *
     * @public
     * @class FileOperationCompletedEventArgs
     * @augments System.Object
     */
    interface FileOperationCompletedEventArgs {
        /**
         * Gets or sets the exception.
         *
         * @instance
         * @public
         * @memberof FileOperationCompletedEventArgs
         * @function Exception
         * @type System.Exception
         */
        Exception: System.Exception | null;
        /**
         * Gets or sets the state.
         *
         * @instance
         * @public
         * @memberof FileOperationCompletedEventArgs
         * @function State
         * @type System.Object
         */
        State: any | null;
        /**
         * Gets or sets the status.
         *
         * @instance
         * @public
         * @memberof FileOperationCompletedEventArgs
         * @function Status
         * @type FileOperationStatus
         */
        Status: FileOperationStatus;
    }
    interface FileOperationCompletedEventArgsFunc extends Function {
        prototype: FileOperationCompletedEventArgs;
    }
    declare var FileOperationCompletedEventArgs: FileOperationCompletedEventArgsFunc;

    /**
     * An exception that represents an errors that occur while loading an EDI file with the EDIFileLoader component
     *
     * @public
     * @class FileLoadingException
     * @augments System.Exception
     */
    interface FileLoadingException extends System.Exception {
    }
    interface FileLoadingExceptionFunc extends Function {
        prototype: FileLoadingException;
    }
    declare var FileLoadingException: FileLoadingExceptionFunc;

    /**
     * Represents data pertaining to the time it took to load an EDI file
     *
     * @public
     * @class FileLoadingEventArgs
     */
    interface FileLoadingEventArgs {
        /**
         * Number of segments loaded
         *
         * @instance
         * @public
         * @readonly
         * @memberof FileLoadingEventArgs
         * @function NumberOfSegmentsLoaded
         * @type System.Int64
         */
        NumberOfSegmentsLoaded: System.Int64;
        /**
         * Get the amount of time passed in milliseconds for the validation process
         *
         * @instance
         * @public
         * @readonly
         * @memberof FileLoadingEventArgs
         * @function Milliseconds
         * @type number
         */
        Milliseconds: number;
    }
    interface FileLoadingEventArgsFunc extends Function {
        prototype: FileLoadingEventArgs;
    }
    declare var FileLoadingEventArgs: FileLoadingEventArgsFunc;

    /**
     * Enum to specify where file joining should occur at the Header level(ST) or the Functional Group level (GS). Used by EDIFileJoiner
     *
     * @public
     * @class FileJoinLevel
     */
    enum FileJoinLevel {
        FUNCTIONALGROUP = 0,
        HEADER = 1
    }

    /**
     * Class reponsible for reading in code values from an external code list
     *
     * @static
     * @abstract
     * @class ExternalCodeListReader
     */
    interface ExternalCodeListReader {
    }
    interface ExternalCodeListReaderFunc extends Function {
        prototype: ExternalCodeListReader;
        new (): ExternalCodeListReader;
        /**
         * @static
         * @public
         * @this ExternalCodeListReader
         * @memberof ExternalCodeListReader
         * @param   {CodeList}    codeList     
         * @param   {string}      filename     
         * @param   {number}      delimiter
         * @return  {void}
         */
        initializeCodeList(codeList: CodeList | null, filename: string | null, delimiter: number): void;
    }
    declare var ExternalCodeListReader: ExternalCodeListReaderFunc;

    /**
     * @static
     * @abstract
     * @public
     * @class ExtCodeList
     */
    interface ExtCodeList {
    }
    interface ExtCodeListFunc extends Function {
        prototype: ExtCodeList;
        new (): ExtCodeList;
        /**
         * @static
         * @public
         * @memberof ExtCodeList
         * @type System.Collections.Generic.Dictionary$2
         */
        ExternalCodeLists: System.Collections.Generic.Dictionary$2<string,CodeList> | null;
        /**
         * @static
         * @public
         * @this ExtCodeList
         * @memberof ExtCodeList
         * @param   {string}     name
         * @return  {boolean}
         */
        containsList(name: string | null): boolean;
        /**
         * @static
         * @public
         * @this ExtCodeList
         * @memberof ExtCodeList
         * @param   {string}     name     
         * @param   {string}     value
         * @return  {boolean}
         */
        containsListAndValue(name: string | null, value: string | null): boolean;
    }
    declare var ExtCodeList: ExtCodeListFunc;

    /**
     * @class EqualityValidationInfo
     */
    interface EqualityValidationInfo {
        /**
         * @instance
         * @public
         * @memberof EqualityValidationInfo
         * @function EqualityElementValue
         * @type string
         */
        EqualityElementValue: string | null;
        /**
         * @instance
         * @public
         * @memberof EqualityValidationInfo
         * @function LineNumber
         * @type number
         */
        LineNumber: number;
        /**
         * @instance
         * @public
         * @memberof EqualityValidationInfo
         * @function ElementOrdinal
         * @type number
         */
        ElementOrdinal: number;
        /**
         * @instance
         * @public
         * @memberof EqualityValidationInfo
         * @function CompositeElementOrdinal
         * @type number
         */
        CompositeElementOrdinal: number;
        /**
         * @instance
         * @public
         * @memberof EqualityValidationInfo
         * @function LoopID
         * @type string
         */
        LoopID: string | null;
        /**
         * @instance
         * @public
         * @memberof EqualityValidationInfo
         * @function SegmentName
         * @type string
         */
        SegmentName: string | null;
    }
    interface EqualityValidationInfoFunc extends Function {
        prototype: EqualityValidationInfo;
        new (): EqualityValidationInfo;
    }
    declare var EqualityValidationInfo: EqualityValidationInfoFunc;

    /**
     * @class EqualityElementsProcessor
     */
    interface EqualityElementsProcessor {
    }
    interface EqualityElementsProcessorFunc extends Function {
        prototype: EqualityElementsProcessor;
        new (): EqualityElementsProcessor;
        /**
         * @static
         * @public
         * @this EqualityElementsProcessor
         * @memberof EqualityElementsProcessor
         * @param   {string}                 summaryLine
         * @return  {EqualityElementInfo}
         */
        extractSummaryInformation(summaryLine: string | null): EqualityElementInfo | null;
        /**
         * @static
         * @public
         * @this EqualityElementsProcessor
         * @memberof EqualityElementsProcessor
         * @param   {string}             elementPostionString
         * @return  {ElementPosition}
         */
        getElementPosition(elementPostionString: string | null): ElementPosition | null;
    }
    declare var EqualityElementsProcessor: EqualityElementsProcessorFunc;

    /**
     * @class EqualityElementInfo
     */
    interface EqualityElementInfo {
        /**
         * @instance
         * @public
         * @memberof EqualityElementInfo
         * @function EqualityElementPosition
         * @type ElementPosition
         */
        EqualityElementPosition: ElementPosition | null;
        /**
         * @instance
         * @public
         * @memberof EqualityElementInfo
         * @function EqualityChildrenElements
         * @type System.Collections.Generic.List$1
         */
        EqualityChildrenElements: System.Collections.Generic.List$1<ElementPosition> | null;
    }
    interface EqualityElementInfoFunc extends Function {
        prototype: EqualityElementInfo;
        new (): EqualityElementInfo;
    }
    declare var EqualityElementInfo: EqualityElementInfoFunc;

    /**
     * Represents an element and its possible values at a specific location
     *
     * @public
     * @class ElementValueInfo
     */
    interface ElementValueInfo {
        /**
         * @instance
         * @public
         * @memberof ElementValueInfo
         * @function CodeList
         * @type CodeList
         */
        CodeList: CodeList | null;
        /**
         * Get/set the segment ordinal number
         *
         * @instance
         * @public
         * @memberof ElementValueInfo
         * @function SegmentOrdinalNumber
         * @type number
         */
        SegmentOrdinalNumber: number;
        /**
         * Get/set the element ordinal number
         *
         * @instance
         * @public
         * @memberof ElementValueInfo
         * @function ElementOrdinalNumber
         * @type number
         */
        ElementOrdinalNumber: number;
        /**
         * Get/set the element composite element ordinal number
         *
         * @instance
         * @public
         * @memberof ElementValueInfo
         * @function SubElementOrdinalNumber
         * @type number
         */
        SubElementOrdinalNumber: number;
        /**
         * Gets the possible value for an element at this specific location
         *
         * @instance
         * @public
         * @readonly
         * @memberof ElementValueInfo
         * @function PossibleValues
         * @type System.Collections.Generic.HashSet$1
         */
        PossibleValues: System.Collections.Generic.HashSet$1<string> | null;
        /**
         * For EDI Rules Reader
         *
         * @instance
         * @public
         * @memberof ElementValueInfo
         * @function CodeListName
         * @type string
         */
        CodeListName: string | null;
        /**
         * Gets the possible value for an element at this specific location separated by a space character
         *
         * @instance
         * @public
         * @this ElementValueInfo
         * @memberof ElementValueInfo
         * @return  {string}
         */
        getPossibleValues(): string | null;
    }
    interface ElementValueInfoFunc extends Function {
        prototype: ElementValueInfo;
        /**
         * Creates a new ElementValueInfo
         *
         * @instance
         * @public
         * @this ElementValueInfo
         * @memberof ElementValueInfo
         * @return  {void}
         */
        new (): ElementValueInfo;
    }
    declare var ElementValueInfo: ElementValueInfoFunc;

    /**
     * @public
     * @class ElementUniqueValues
     */
    interface ElementUniqueValues {
        /**
         * @instance
         * @public
         * @memberof ElementUniqueValues
         * @function ElementNumber
         * @type number
         */
        ElementNumber: number;
        /**
         * @instance
         * @public
         * @memberof ElementUniqueValues
         * @function ElementUniqueValueInfo
         * @type System.Collections.Generic.List$1
         */
        ElementUniqueValueInfo: System.Collections.Generic.List$1<ElementUniqueValueInfo> | null;
    }
    interface ElementUniqueValuesFunc extends Function {
        prototype: ElementUniqueValues;
        /**
         * @instance
         * @public
         * @this ElementUniqueValues
         * @memberof ElementUniqueValues
         * @return  {void}
         */
        new (): ElementUniqueValues;
    }
    declare var ElementUniqueValues: ElementUniqueValuesFunc;

    /**
     * @public
     * @class ElementUniqueValueInfo
     */
    interface ElementUniqueValueInfo {
        /**
         * @instance
         * @public
         * @memberof ElementUniqueValueInfo
         * @function SegmentOrdinalNumber
         * @type number
         */
        SegmentOrdinalNumber: number;
        /**
         * @instance
         * @public
         * @memberof ElementUniqueValueInfo
         * @function ElementOrdinalNumber
         * @type number
         */
        ElementOrdinalNumber: number;
        /**
         * @instance
         * @public
         * @memberof ElementUniqueValueInfo
         * @function SubElementOrdinalNumber
         * @type number
         */
        SubElementOrdinalNumber: number;
    }
    interface ElementUniqueValueInfoFunc extends Function {
        prototype: ElementUniqueValueInfo;
        /**
         * @instance
         * @public
         * @this ElementUniqueValueInfo
         * @memberof ElementUniqueValueInfo
         * @return  {void}
         */
        new (): ElementUniqueValueInfo;
    }
    declare var ElementUniqueValueInfo: ElementUniqueValueInfoFunc;

    /**
     * EDI File Type
     *
     * @public
     * @class FileType
     */
    enum FileType {
        X12 = 0,
        EDIFACT = 1
    }

    /**
     * Represents an element schema used by EDI Rules Reader
     *
     * @public
     * @class ElementSchema
     */
    interface ElementSchema {
        /**
         * Get/set the element number
         *
         * @instance
         * @public
         * @memberof ElementSchema
         * @function ElementNumber
         * @type number
         */
        ElementNumber: number;
        /**
         * Get/set whether this is a composite element
         *
         * @instance
         * @public
         * @memberof ElementSchema
         * @function Composite
         * @type boolean
         */
        Composite: boolean;
        /**
         * Get/set the usage of this element
         *
         * @instance
         * @public
         * @memberof ElementSchema
         * @function Usage
         * @type Usage
         */
        Usage: Usage;
        /**
         * Get/set the composite element
         *
         * @instance
         * @public
         * @memberof ElementSchema
         * @function CompositeElement
         * @type Segment
         */
        CompositeElement: Segment | null;
    }
    interface ElementSchemaFunc extends Function {
        prototype: ElementSchema;
        /**
         * Creates a new ElementSchema
         *
         * @instance
         * @public
         * @this ElementSchema
         * @memberof ElementSchema
         * @return  {void}
         */
        new (): ElementSchema;
    }
    declare var ElementSchema: ElementSchemaFunc;

    /**
     * Represents the position of an element with the EDI file
     *
     * @public
     * @class ElementPosition
     */
    interface ElementPosition {
        /**
         * Get/set the segment ordinal position
         *
         * @instance
         * @public
         * @memberof ElementPosition
         * @function SegmentOridinalPosition
         * @type number
         */
        SegmentOridinalPosition: number;
        /**
         * Get/set element ordinal position
         *
         * @instance
         * @public
         * @memberof ElementPosition
         * @function ElementOrdinalPosition
         * @type number
         */
        ElementOrdinalPosition: number;
        /**
         * Get/set composite element position
         *
         * @instance
         * @public
         * @memberof ElementPosition
         * @function CompositeElementPosition
         * @type number
         */
        CompositeElementPosition: number;
        /**
         * Checks if this is a segment position
         *
         * @instance
         * @public
         * @this ElementPosition
         * @memberof ElementPosition
         * @return  {boolean}        true if a segment position, false otherwise
         */
        isSegmentPosition(): boolean;
        /**
         * Checks if this is an element position
         *
         * @instance
         * @public
         * @this ElementPosition
         * @memberof ElementPosition
         * @return  {boolean}        true if a element position, false otherwise
         */
        isElementPosition(): boolean;
        /**
         * Checks if this is a composite element position
         *
         * @instance
         * @public
         * @this ElementPosition
         * @memberof ElementPosition
         * @return  {boolean}        true if a composite element, false otherwise
         */
        isCompositeElementPosition(): boolean;
        /**
         * Returns a string representation of this object
         *
         * @instance
         * @public
         * @override
         * @this ElementPosition
         * @memberof ElementPosition
         * @return  {string}        string representation of this object
         */
        toString(): string | null;
        /**
         * @instance
         * @public
         * @this ElementPosition
         * @memberof ElementPosition
         * @return  {string}
         */
        toSummaryKey(): string | null;
    }
    interface ElementPositionFunc extends Function {
        prototype: ElementPosition;
        /**
         * Creates a new Element Position
         *
         * @instance
         * @public
         * @this ElementPosition
         * @memberof ElementPosition
         * @return  {void}
         */
        new (): ElementPosition;
    }
    declare var ElementPosition: ElementPositionFunc;

    /**
     * Validates and loads EDI X12 and EDIFACT files
     *
     * @public
     * @class EDIValidator
     */
    interface EDIValidator {
        /**
         * @instance
         * @public
         * @readonly
         * @memberof EDIValidator
         * @type System.Collections.Generic.List$1
         */
        ValidatedTransactions: System.Collections.Generic.List$1<LightWeightSegment> | null;
        /**
         * If set to true element numbers are copied from the rules schema to DataElements for the validation output
         *
         * @instance
         * @public
         * @memberof EDIValidator
         * @function CopyElementNumber
         * @type boolean
         */
        CopyElementNumber: boolean;
        /**
         * If set to true then when a required loop is not found EDI Validator will try to detect when an infinite loop scenario may be occurring
         *
         * @instance
         * @public
         * @memberof EDIValidator
         * @function PreventInfiniteLoopWhileSearching
         * @type boolean
         */
        PreventInfiniteLoopWhileSearching: boolean;
        /**
         * If set the true then delimiters will be autodetected
         *
         * @instance
         * @public
         * @memberof EDIValidator
         * @function AutoDetectDelimiters
         * @type boolean
         */
        AutoDetectDelimiters: boolean;
        /**
         * Event fired to perform a custom code condition check
         *
         * @instance
         * @public
         * @this EDIValidator
         * @memberof EDIValidator
         * @function addOnCodeCondition
         * @param   {EDIValidator.CodeConditionEvent}    value
         * @return  {void}
         */
        addOnCodeCondition(value: {(sender: any, e: CodeConditionEventArgs): void} | null): void;
        /**
         * Event fired to perform a custom code condition check
         *
         * @instance
         * @public
         * @this EDIValidator
         * @memberof EDIValidator
         * @function removeOnCodeCondition
         * @param   {EDIValidator.CodeConditionEvent}    value
         * @return  {void}
         */
        removeOnCodeCondition(value: {(sender: any, e: CodeConditionEventArgs): void} | null): void;
        /**
         * Event fired when the progress changes during validation
         *
         * @instance
         * @public
         * @this EDIValidator
         * @memberof EDIValidator
         * @function addProgressChanged
         * @param   {EDIValidator.GeneralEvent}    value
         * @return  {void}
         */
        addProgressChanged(value: {(progress: number): void} | null): void;
        /**
         * Event fired when the progress changes during validation
         *
         * @instance
         * @public
         * @this EDIValidator
         * @memberof EDIValidator
         * @function removeProgressChanged
         * @param   {EDIValidator.GeneralEvent}    value
         * @return  {void}
         */
        removeProgressChanged(value: {(progress: number): void} | null): void;
        /**
         * Event fired when validation is complete
         *
         * @instance
         * @public
         * @this EDIValidator
         * @memberof EDIValidator
         * @function addValidationCompleted
         * @param   {EDIValidator.ValidationCompletedEvent}    value
         * @return  {void}
         */
        addValidationCompleted(value: {(sender: any, e: ValidationEventsArgs): void} | null): void;
        /**
         * Event fired when validation is complete
         *
         * @instance
         * @public
         * @this EDIValidator
         * @memberof EDIValidator
         * @function removeValidationCompleted
         * @param   {EDIValidator.ValidationCompletedEvent}    value
         * @return  {void}
         */
        removeValidationCompleted(value: {(sender: any, e: ValidationEventsArgs): void} | null): void;
        /**
         * Event fired when validation has started
         *
         * @instance
         * @public
         * @this EDIValidator
         * @memberof EDIValidator
         * @function addValidationStarted
         * @param   {EDIValidator.ValidationStartedEvent}    value
         * @return  {void}
         */
        addValidationStarted(value: {(sender: any): void} | null): void;
        /**
         * Event fired when validation has started
         *
         * @instance
         * @public
         * @this EDIValidator
         * @memberof EDIValidator
         * @function removeValidationStarted
         * @param   {EDIValidator.ValidationStartedEvent}    value
         * @return  {void}
         */
        removeValidationStarted(value: {(sender: any): void} | null): void;
        /**
         * If set to true then when a required loop is not found EDI Validator will try to detect when an infinite loop scenario may be occurring
         *
         * @instance
         * @public
         * @memberof EDIValidator
         * @function MaxErrorsBeforeThrowingException
         * @type System.Int64
         */
        MaxErrorsBeforeThrowingException: System.Int64;
        /**
         * String to ignore at between segment delimiters
         *
         * @instance
         * @public
         * @memberof EDIValidator
         * @function TrimString
         * @type string
         */
        TrimString: string | null;
        /**
         * Treat all warnings as errors
         *
         * @instance
         * @public
         * @memberof EDIValidator
         * @function TreatWarningsAsErrors
         * @type boolean
         */
        TreatWarningsAsErrors: boolean;
        /**
         * EDI data to validate. EDI data can also be specified from a file using the EDIFile property
         *
         * @instance
         * @public
         * @memberof EDIValidator
         * @function EDIDataString
         * @type string
         */
        EDIDataString: string | null;
        /**
         * Load EDI data while validating.  After validation is complete the EDI data can be accessed the the EDIDocument property
         *
         * @instance
         * @public
         * @memberof EDIValidator
         * @function LoadValidatedData
         * @type boolean
         */
        LoadValidatedData: boolean;
        /**
         * Check whether the EDI data or file has passed validation. Use this property after calling the Validate() method
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIValidator
         * @function Passed
         * @type boolean
         */
        Passed: boolean;
        /**
         * EDI Lite document available after validation.  Validation must pass or this object will be null
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIValidator
         * @function EDILightWeightDocument
         * @type EDILightWeightDocument
         */
        EDILightWeightDocument: EDILightWeightDocument | null;
        /**
         * Number of lines in the EDI file
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIValidator
         * @function NumberOfLines
         * @type number
         */
        NumberOfLines: number;
        /**
         * EDI Rules Reader used to read in EDI rules for validation
         *
         * @instance
         * @public
         * @memberof EDIValidator
         * @function EDIRulesReader
         * @type EDIRulesReader
         */
        EDIRulesReader: EDIRulesReader | null;
        /**
         * Gets or sets the EDI rules file data. Each line must end with a return character
         *
         * @instance
         * @public
         * @memberof EDIValidator
         * @function EDIRulesFileData
         * @type string
         */
        EDIRulesFileData: string | null;
        /**
         * Data loaded from the EDI file when property LoadValidatedData is set to true. Available after validation
         * Errors encountered while validating EDI file. Available after validation
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIValidator
         * @function Errors
         * @type System.Collections.Generic.List$1
         */
        Errors: System.Collections.Generic.List$1<EDIError> | null;
        /**
         * Warnings encountered while validating EDI file. Available after validation
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIValidator
         * @function Warnings
         * @type System.Collections.Generic.List$1
         */
        Warnings: System.Collections.Generic.List$1<EDIWarning> | null;
        /**
         * EDI files lines available after validation.
         *
         * @instance
         * @public
         * @readonly
         * @memberof EDIValidator
         * @function EDIFileLines
         * @type Array.<string>
         */
        EDIFileLines: string[] | null;
        /**
         * EDI file delimiters
         *
         * @instance
         * @public
         * @memberof EDIValidator
         * @function Delimiters
         * @type Delimiters
         */
        Delimiters: Delimiters | null;
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {number}    lineNum
         * @return  {void}
         */
        /**
         * This procedures sets the usage of a segment based on the values or existance of
         another segments
         *
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {DataSegment}    segment
         * @return  {Usage}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {DataSegment}    segment
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {DataSegment}    segment       
         * @param   {boolean}        throwError
         * @return  {void}
         */
        /**
         * This procedures sets the usage of a segment elements based on the values or existance of
         another segments or elements
         *
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {DataSegment}    segment
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {DataSegment}           segment    
         * @param   {LightWeightSegment}    currSeg
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {DataSegment}                                sch_seg                    
         * @param   {LightWeightElement}                         elem                       
         * @param   {DataElement}                                sch_elem                   
         * @param   {string}                                     segmentName                
         * @param   {number}                                     elementOrdinal             
         * @param   {System.Collections.Generic.Dictionary$2}    elementPositionCounters
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {DataSegment}                                sch_seg                    
         * @param   {LightWeightElement}                         compositeElement           
         * @param   {DataElement}                                sch_elem                   
         * @param   {string}                                     segmentName                
         * @param   {number}                                     elementOrdinal             
         * @param   {System.Collections.Generic.Dictionary$2}    elementPositionCounters
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {DataSegment}           sch_seg                          
         * @param   {string}                segmentName                      
         * @param   {number}                elementOrdinal                   
         * @param   {DataElement}           schema_composite_parent_elem     
         * @param   {LightWeightElement}    current_composite_parent_elem    
         * @param   {number}                i
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {DataSegment}                          sch_seg                         
         * @param   {System.Collections.Generic.List$1}    elems                           
         * @param   {string}                               segmentName                     
         * @param   {number}                               elementOrdinal                  
         * @param   {DataElement}                          schema_composite_parent_elem    
         * @param   {number}                               i
         * @return  {void}
         */
        /**
         * @instance
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {number}                  lineNumber                 
         * @param   {string}                  loopName                   
         * @param   {string}                  segmentName                
         * @param   {number}                  elementOrdinal             
         * @param   {number}                  compositeElementOrdinal    
         * @param   {EDIValidationMessage}    message                    
         * @param   {string}                  description                
         * @param   {string}                  position                   
         * @param   {DataSegment}             seg_schema
         * @return  {void}
         */
        /**
         * @instance
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {EDIError}    newError           
         * @param   {boolean}     checkForMaximum
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {number}                  lineNumber                 
         * @param   {string}                  loopName                   
         * @param   {string}                  segmentName                
         * @param   {number}                  elementOrdinal             
         * @param   {number}                  compositeElementOrdinal    
         * @param   {EDIValidationMessage}    message                    
         * @param   {string}                  description                
         * @param   {string}                  position                   
         * @param   {DataSegment}             segSchema
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {LightWeightSegment}                         curr_seg                   
         * @param   {DataSegment}                                sch_seg                    
         * @param   {System.Collections.Generic.Dictionary$2}    elementPositionCounters    
         * @param   {boolean}                                    addAlreadyFoundValues
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {LightWeightSegment}    curr_seg    
         * @param   {DataSegment}           sch_seg
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {LightWeightSegment}                         curr_seg                   
         * @param   {DataSegment}                                sch_seg                    
         * @param   {System.Collections.Generic.Dictionary$2}    elementPositionCounters    
         * @param   {boolean}                                    addAlreadyFoundValues
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {System.Collections.Generic.Dictionary$2}    foundElements    
         * @param   {DataSegment}                                sch_seg          
         * @param   {System.Collections.Generic.List$1}          selfRules
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {System.Collections.Generic.Dictionary$2}    foundElements    
         * @param   {DataSegment}                                sch_seg          
         * @param   {System.Collections.Generic.List$1}          selfRules
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {System.Collections.Generic.Dictionary$2}    foundElements     
         * @param   {DataSegment}                                sch_seg           
         * @param   {System.Collections.Generic.List$1}          selfRules         
         * @param   {number}                                     elementOrdinal
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {System.Collections.Generic.Dictionary$2}    foundElements     
         * @param   {DataSegment}                                sch_seg           
         * @param   {System.Collections.Generic.List$1}          selfRules         
         * @param   {number}                                     elementOrdinal
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {DataSegment}           sch_seg     
         * @param   {LightWeightSegment}    curr_seg    
         * @param   {number}                i
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {DataSegment}           sch_seg           
         * @param   {LightWeightSegment}    curr_seg          
         * @param   {string}                repeatingValue    
         * @param   {number}                i
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {System.Collections.Generic.Dictionary$2}    foundElements             
         * @param   {DataSegment}                                sch_seg                   
         * @param   {System.Collections.Generic.List$1}          elementPairConstraints    
         * @param   {LightWeightSegment}                         curr_seg
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {System.Collections.Generic.Dictionary$2}    foundElements                    
         * @param   {DataSegment}                                sch_seg                          
         * @param   {System.Collections.Generic.List$1}          elementConditionalConstraints    
         * @param   {LightWeightSegment}                         curr_seg
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {System.Collections.Generic.Dictionary$2}    foundElements                   
         * @param   {DataSegment}                                sch_seg                         
         * @param   {System.Collections.Generic.List$1}          elementRequirmentConstraints    
         * @param   {LightWeightSegment}                         curr_seg
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {System.Collections.Generic.Dictionary$2}    foundElements                        
         * @param   {DataSegment}                                sch_seg                              
         * @param   {System.Collections.Generic.List$1}          elementListConditionalConstraints    
         * @param   {LightWeightSegment}                         curr_seg
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {System.Collections.Generic.Dictionary$2}    foundElements                  
         * @param   {DataSegment}                                sch_seg                        
         * @param   {System.Collections.Generic.List$1}          elementExclusionConstraints    
         * @param   {LightWeightSegment}                         curr_seg
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {LightWeightSegment}    curr_seg    
         * @param   {DataSegment}           sch_seg
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {LightWeightSegment}    curr_seg    
         * @param   {DataSegment}           sch_seg
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {LightWeightSegment}    curr_seg    
         * @param   {DataSegment}           sch_seg
         * @return  {boolean}
         */
        /**
         * Only check the loopValidation index element
         *
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {LightWeightSegment}                 curr_seg           
         * @param   {DataSegment}                        sch_seg            
         * @param   {System.Collections.Generic.List}    procedureErrors    
         * @param   {boolean}                            forgive
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {LightWeightSegment}    curr_seg    
         * @param   {DataSegment}           sch_seg
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {LightWeightSegment}    curr_seg    
         * @param   {DataSegment}           sch_seg
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {LightWeightSegment}    curr_seg    
         * @param   {DataSegment}           sch_seg
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {string}     segmentName
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {Loop}                  loop                
         * @param   {number}                segmentNumber       
         * @param   {LightWeightSegment}    curr_Segment        
         * @param   {DataSegment}           sch_seg             
         * @param   {DataSegment}           duplicateSegment
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {Loop}                  loop               
         * @param   {number}                segmentNumber      
         * @param   {LightWeightSegment}    segment            
         * @param   {boolean}               ggg                
         * @param   {DataSegment}           previousSegment
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {DataSegment}    sch_seg
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {Loop}                  previousLoop       
         * @param   {LightWeightSegment}    segment            
         * @param   {DataSegment}           previousSegment
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {Loop}                  previousLoop           
         * @param   {LightWeightSegment}    segment                
         * @param   {System.Int32}          previousLoopCounter
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {Loop}                  previousLoop    
         * @param   {LightWeightSegment}    segment         
         * @param   {DataSegment}           seg_schema
         * @return  {boolean}
         */
        /**
         * Resets all validation variables.  This method is automatically everytime the Validate method
         is called.
         *
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {DataSegment}           segSchema     
         * @param   {LightWeightSegment}    curr_Seg      
         * @param   {Loop}                  schemaLoop
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {Loop}                  schemaLoop    
         * @param   {LightWeightSegment}    cs
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {Loop}                  schemaLoop    
         * @param   {LightWeightSegment}    cs
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {Loop}                  schemaLoop    
         * @param   {LightWeightSegment}    cs
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {Loop}                  schemaLoop    
         * @param   {LightWeightSegment}    cs
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {Loop}                                       schemaLoop                 
         * @param   {LightWeightLoop}                            parentDataLoop             
         * @param   {System.Collections.Generic.Dictionary$2}    elementPositionCounters
         * @return  {void}
         */
        /**
         * Validates the contents of an EDI Document
         *
         * @instance
         * @public
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {EDIDocument}    document    document to validate
         * @return  {void}
         */
        validate$1(document: EDIDocument | null): void;
        /**
         * Validates the contents of an EDILightWeightDocument
         *
         * @instance
         * @public
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {EDILightWeightDocument}    document    document to validate
         * @return  {void}
         */
        validate$2(document: EDILightWeightDocument | null): void;
        /**
         * Validate the EDI file
         *
         * @instance
         * @public
         * @this EDIValidator
         * @memberof EDIValidator
         * @return  {void}
         */
        validate(): void;
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {DataSegment}    segSchema
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {Loop}               schemaLoop      
         * @param   {LightWeightLoop}    thisDataLoop    
         * @param   {DataSegment}        segSchema
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {LightWeightLoop}                          thisDataLoop               
         * @param   {System.Collections.Generic.List}          missingRequiredSegments    
         * @param   {System.Collections.Generic.Dictionary}    missingSegmentErrors
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {Loop}                  schemaLoop    
         * @param   {LightWeightSegment}    currSeg
         * @return  {number}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {Loop}                  schemaLoop    
         * @param   {DataSegment}           seg_Schema    
         * @param   {LightWeightSegment}    curr_Seg      
         * @param   {number}                lineNumber
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {LightWeightSegment}    currentSegment    
         * @param   {DataSegment}           schemaSegment
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {LightWeightSegment}    currentSegment    
         * @param   {DataSegment}           schemaSegment
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {LightWeightElement}    currentElement    
         * @param   {DataElement}           schemaElement
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {DataSegment}           sch_seg           
         * @param   {LightWeightElement}    currentElement    
         * @param   {DataElement}           schemaElement     
         * @param   {number}                elementOrdinal
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {string}     segmentName
         * @return  {boolean}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {LightWeightSegment}    currentSegment    
         * @param   {Loop}                  schemaLoop        
         * @param   {DataSegment}           schemaSegment
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {DataSegment}           segSchema    
         * @param   {LightWeightSegment}    curr_Seg
         * @return  {void}
         */
        /**
         * Responsible for checking the values of elements and composite elements to
         make sure that they are correct. 
         HOW SUMMARY VALUES ARE CHECKED:
         1. Since summary fields (balance fields) only apply in the same loop, the summary
            parent element is always encountered first.  Since this is the first occurrence of the parent
            element, its value is saved in the summaryElementValidationInfo collection's SummaryElementValue property as well
            as other information.
         2. Next the 'summarychild' elements are encountered.  We first check who its parent elements are.
            We get them from the summaryElementValidationInfo collection.  The
            summarychild's element value is added to the aggregate value of the summaryElementValidationInfo
            collection.  This aggregate value will later be used to check if the values of all the 'summaryChild' element
            encountered are equal to the SummaryElementValue saved when the 'SummaryParent' was initially encountered.
         *
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {DataSegment}           segSchema    
         * @param   {LightWeightSegment}    curr_Seg
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {DataSegment}           segSchema    
         * @param   {LightWeightSegment}    curr_Seg
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {string}    message
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {Loop}    loop
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {Loop}               loop        
         * @param   {LightWeightLoop}    dataLoop
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {Loop}               loop        
         * @param   {LightWeightLoop}    dataLoop
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {Loop}    loop
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {LightWeightLoop}    loop
         * @return  {void}
         */
        /**
         * Associates errors and warnings to a closest segment. If the closest segment is found it will be assigned to the ClosestSegment property of errors and warnings
         *
         * @instance
         * @public
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {ClosestSegmentToError}    cs    ClosestSegmentToError
         * @return  {void}
         */
        associateClosestSegmentToErrorsAndWarnings(cs: ClosestSegmentToError | null): void;
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {Loop}           currentLoop    
         * @param   {DataSegment}    start
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @return  {void}
         */
        /**
         * @instance
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @return  {number}
         */
        /**
         * @instance
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {CodeConditionEventArgs}    e
         * @return  {void}
         */
    }
    interface EDIValidatorFunc extends Function {
        prototype: EDIValidator;
        /**
         * Create a new EDI Validator
         *
         * @instance
         * @public
         * @this EDIValidator
         * @memberof EDIValidator
         * @return  {void}
         */
        new (): EDIValidator;
        /**
         * @static
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {Loop}                  schemaLoop    
         * @param   {LightWeightSegment}    cs
         * @return  {boolean}
         */
        /**
         * @static
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {Loop}                  schemaLoop    
         * @param   {LightWeightSegment}    cs
         * @return  {boolean}
         */
        /**
         * @static
         * @private
         * @this EDIValidator
         * @memberof EDIValidator
         * @param   {Loop}                  schemaLoop    
         * @param   {LightWeightSegment}    cs
         * @return  {boolean}
         */
    }
    declare var EDIValidator: EDIValidatorFunc;

    /**
     * Basic element used by EDI Rules Reader
     *
     * @public
     * @class Element
     */
    interface Element {
        /**
         * Get/Set the element number
         *
         * @instance
         * @public
         * @memberof Element
         * @function ElementNumber
         * @type number
         */
        ElementNumber: number;
        /**
         * Get/Set the datatype
         *
         * @instance
         * @public
         * @memberof Element
         * @function DataType
         * @type ElementDataType
         */
        DataType: ElementDataType;
        /**
         * Get/Set the minimum string length
         *
         * @instance
         * @public
         * @memberof Element
         * @function Min
         * @type number
         */
        Min: number;
        /**
         * Get/Set the maximum string length
         *
         * @instance
         * @public
         * @memberof Element
         * @function Max
         * @type number
         */
        Max: number;
        /**
         * Description of element
         *
         * @instance
         * @public
         * @memberof Element
         * @function Description
         * @type string
         */
        Description: string | null;
        /**
         * Get/Set the collection of element codes description
         This is a code value can the element can have and the description
         of this code
         *
         * @instance
         * @public
         * @memberof Element
         * @function Codes
         * @type System.Collections.Generic.Dictionary$2
         */
        Codes: System.Collections.Generic.Dictionary$2<string,string> | null;
        /**
         * Adds the code values.
         *
         * @instance
         * @public
         * @this Element
         * @memberof Element
         * @param   {string}    key      The key.
         * @param   {string}    value    The value.
         * @return  {void}
         */
        addCodeValues(key: string | null, value: string | null): void;
    }
    interface ElementFunc extends Function {
        prototype: Element;
        /**
         * Create a new Element
         *
         * @instance
         * @public
         * @this Element
         * @memberof Element
         * @return  {void}
         */
        new (): Element;
    }
    declare var Element: ElementFunc;

    /**
     * @class ElementCache
     */
    interface ElementCache {
        /**
         * @instance
         * @public
         * @this ElementCache
         * @memberof ElementCache
         * @param   {string}                value
         * @return  {LightWeightElement}
         */
        add(value: string | null): LightWeightElement | null;
        /**
         * @instance
         * @public
         * @this ElementCache
         * @memberof ElementCache
         * @return  {void}
         */
        clear(): void;
    }
    interface ElementCacheFunc extends Function {
        prototype: ElementCache;
        new (): ElementCache;
    }
    declare var ElementCache: ElementCacheFunc;

    /**
     * Represents a list of values that an element can contain
     *
     * @public
     * @class ElementCodeList
     */
    interface ElementCodeList {
        /**
         * Get/Set the element number
         *
         * @instance
         * @public
         * @memberof ElementCodeList
         * @function ElementNumber
         * @type number
         */
        ElementNumber: number;
        /**
         * Possible codes that an element can contain
         *
         * @instance
         * @public
         * @memberof ElementCodeList
         * @function CodeList
         * @type System.Collections.Generic.Dictionary$2
         */
        CodeList: System.Collections.Generic.Dictionary$2<System.Tuple$3<number,number,number>,ElementValueInfo> | null;
    }
    interface ElementCodeListFunc extends Function {
        prototype: ElementCodeList;
        /**
         * Creates a new ElementCodeList
         *
         * @instance
         * @public
         * @this ElementCodeList
         * @memberof ElementCodeList
         * @return  {void}
         */
        new (): ElementCodeList;
    }
    declare var ElementCodeList: ElementCodeListFunc;

    /**
     * Represents a element pair relationship
     *
     * @public
     * @class ElementPairConstraint
     */
    interface ElementPairConstraint {
        /**
         * Get/set a list of element ordinals involved in the contraint
         *
         * @instance
         * @public
         * @memberof ElementPairConstraint
         * @function ElementOrdinals
         * @type System.Collections.Generic.List$1
         */
        ElementOrdinals: System.Collections.Generic.List$1<number> | null;
        /**
         * Get a list of the element ordinals involved in the contraint as a space
         delimited list
         *
         * @instance
         * @public
         * @this ElementPairConstraint
         * @memberof ElementPairConstraint
         * @return  {string}        space delimited list
         */
        getElementOrdinalsString(): string | null;
        /**
         * Get a list of the element ordinals involved in the contraint as a space
         delimited list
         *
         * @instance
         * @public
         * @this ElementPairConstraint
         * @memberof ElementPairConstraint
         * @param   {number}    start    start position in the collection
         * @return  {string}             space delimited list
         */
        getElementOrdinalsString$1(start: number): string | null;
    }
    interface ElementPairConstraintFunc extends Function {
        prototype: ElementPairConstraint;
        /**
         * Create a new ElementPairConstraint object
         *
         * @instance
         * @public
         * @this ElementPairConstraint
         * @memberof ElementPairConstraint
         * @return  {void}
         */
        new (): ElementPairConstraint;
    }
    declare var ElementPairConstraint: ElementPairConstraintFunc;

    /**
     * Used by EDIRuleCreator
     *
     * @public
     * @class ElementCounterDisplay
     */
    interface ElementCounterDisplay {
        /**
         * Gets or sets the element.
         *
         * @instance
         * @public
         * @memberof ElementCounterDisplay
         * @function Element
         * @type string
         */
        Element: string | null;
        /**
         * Gets or sets the rule.
         *
         * @instance
         * @public
         * @memberof ElementCounterDisplay
         * @function Rule
         * @type string
         */
        Rule: string | null;
    }
    interface ElementCounterDisplayFunc extends Function {
        prototype: ElementCounterDisplay;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this ElementCounterDisplay
         * @memberof ElementCounterDisplay
         * @param   {string}    element    The element.
         * @param   {string}    rule       The rule.
         * @return  {void}
         */
        new (element: string | null, rule: string | null): ElementCounterDisplay;
    }
    declare var ElementCounterDisplay: ElementCounterDisplayFunc;

    /**
     * @static
     * @abstract
     * @class ElementProcessor
     */
    interface ElementProcessor {
    }
    interface ElementProcessorFunc extends Function {
        prototype: ElementProcessor;
        new (): ElementProcessor;
        /**
         * @static
         * @public
         * @memberof ElementProcessor
         * @constant
         * @default "A"
         * @type string
         */
        ALPHABETIC_TYPE: string | null;
        /**
         * @static
         * @public
         * @memberof ElementProcessor
         * @constant
         * @default "AN"
         * @type string
         */
        STRING_TYPE: string | null;
        /**
         * @static
         * @public
         * @memberof ElementProcessor
         * @constant
         * @default "ID"
         * @type string
         */
        IDENTIFIER_TYPE: string | null;
        /**
         * @static
         * @public
         * @memberof ElementProcessor
         * @constant
         * @default "NO"
         * @type string
         */
        NUMBER_TYPE: string | null;
        /**
         * @static
         * @public
         * @memberof ElementProcessor
         * @constant
         * @default "PN"
         * @type string
         */
        POSITIVE_NUMBER_TYPE: string | null;
        /**
         * @static
         * @public
         * @memberof ElementProcessor
         * @constant
         * @default "NN"
         * @type string
         */
        NEGATIVE_NUMBER_TYPE: string | null;
        /**
         * @static
         * @public
         * @memberof ElementProcessor
         * @constant
         * @default "R"
         * @type string
         */
        DECIMAL_TYPE: string | null;
        /**
         * @static
         * @public
         * @memberof ElementProcessor
         * @constant
         * @default "DT"
         * @type string
         */
        DATETIME_TYPE: string | null;
        /**
         * @static
         * @public
         * @memberof ElementProcessor
         * @constant
         * @default "TM"
         * @type string
         */
        TIME_TYPE: string | null;
        /**
         * @static
         * @public
         * @this ElementProcessor
         * @memberof ElementProcessor
         * @param   {string}     elementString
         * @return  {Element}
         */
        extractElement(elementString: string | null): Element | null;
        /**
         * @static
         * @public
         * @this ElementProcessor
         * @memberof ElementProcessor
         * @param   {string}                                     codeline     
         * @param   {System.Collections.Generic.Dictionary$2}    codeLists    
         * @param   {System.Collections.Generic.Dictionary$2}    elements
         * @return  {ElementCodeList}
         */
        extractCodeList(codeline: string | null, codeLists: System.Collections.Generic.Dictionary$2<string,CodeList> | null, elements: System.Collections.Generic.Dictionary$2<number,Element> | null): ElementCodeList | null;
        /**
         * @static
         * @public
         * @this ElementProcessor
         * @memberof ElementProcessor
         * @param   {string}                                     codeline    
         * @param   {System.Collections.Generic.Dictionary$2}    elements
         * @return  {ElementDescriptionList}
         */
        extractDescriptionList(codeline: string | null, elements: System.Collections.Generic.Dictionary$2<number,Element> | null): ElementDescriptionList | null;
        /**
         * @static
         * @public
         * @this ElementProcessor
         * @memberof ElementProcessor
         * @param   {string}                 formatLine
         * @return  {ElementUniqueValues}
         */
        extractUniqueList(formatLine: string | null): ElementUniqueValues | null;
        /**
         * @static
         * @public
         * @this ElementProcessor
         * @memberof ElementProcessor
         * @param   {string}                                     formatLine        
         * @param   {System.Collections.Generic.Dictionary$2}    elementFormats
         * @return  {ElementFormatting}
         */
        extractFormatList(formatLine: string | null, elementFormats: System.Collections.Generic.Dictionary$2<string,string> | null): ElementFormatting | null;
        /**
         * @static
         * @public
         * @this ElementProcessor
         * @memberof ElementProcessor
         * @param   {string}             elementPostionString
         * @return  {ElementPosition}
         */
        getElementPosition(elementPostionString: string | null): ElementPosition | null;
    }
    declare var ElementProcessor: ElementProcessorFunc;

    /**
     * Represents the possible element types
     *
     * @public
     * @class ElementDataType
     */
    enum ElementDataType {
        ALPHABETIC = 0,
        IDENTIFIER = 1,
        STRING = 2,
        NUMERIC = 3,
        POSITIVE_NUMERIC = 4,
        NEGATIVE_NUMERIC = 5,
        DECIMAL = 6,
        TIME = 7,
        DATETIME = 8
    }

    /**
     * @public
     * @class ElementDescriptionList
     */
    interface ElementDescriptionList {
        /**
         * Get/Set the element number
         *
         * @instance
         * @public
         * @memberof ElementDescriptionList
         * @function ElementNumber
         * @type number
         */
        ElementNumber: number;
        /**
         * Descriptions that element can have
         *
         * @instance
         * @public
         * @memberof ElementDescriptionList
         * @function Descriptions
         * @type System.Collections.Generic.Dictionary$2
         */
        Descriptions: System.Collections.Generic.Dictionary$2<System.Tuple$3<number,number,number>,ElementDescriptionInfo> | null;
    }
    interface ElementDescriptionListFunc extends Function {
        prototype: ElementDescriptionList;
        /**
         * Creates a new ElementCodeList
         *
         * @instance
         * @public
         * @this ElementDescriptionList
         * @memberof ElementDescriptionList
         * @return  {void}
         */
        new (): ElementDescriptionList;
    }
    declare var ElementDescriptionList: ElementDescriptionListFunc;

    /**
     * Used by EDIRuleCreator
     *
     * @public
     * @class ElementEqualityDisplay
     */
    interface ElementEqualityDisplay {
        /**
         * Gets or sets the element.
         *
         * @instance
         * @public
         * @memberof ElementEqualityDisplay
         * @function Element
         * @type string
         */
        Element: string | null;
        /**
         * Gets or sets the rule.
         *
         * @instance
         * @public
         * @memberof ElementEqualityDisplay
         * @function Rule
         * @type string
         */
        Rule: string | null;
    }
    interface ElementEqualityDisplayFunc extends Function {
        prototype: ElementEqualityDisplay;
        /**
         * Initializes a new instance of the {@link } class.
         *
         * @instance
         * @public
         * @this ElementEqualityDisplay
         * @memberof ElementEqualityDisplay
         * @param   {string}    element    The element.
         * @param   {string}    rule       The rule.
         * @return  {void}
         */
        new (element: string | null, rule: string | null): ElementEqualityDisplay;
    }
    declare var ElementEqualityDisplay: ElementEqualityDisplayFunc;

    /**
     * Used when creating EDI Rules rules
     *
     * @public
     * @class ElementFormat
     */
    interface ElementFormat {
        /**
         * Element ordinal that formats must be applied to
         *
         * @instance
         * @public
         * @memberof ElementFormat
         * @function PivotElementOrdinal
         * @type number
         */
        PivotElementOrdinal: number;
        /**
         * Value that a DataElement must have before formats can be applied
         *
         * @instance
         * @public
         * @memberof ElementFormat
         * @function PivotElementValue
         * @type string
         */
        PivotElementValue: string | null;
        /**
         * Collection of regular expression formats that data element's value may be compared against
         *
         * @instance
         * @public
         * @memberof ElementFormat
         * @function FormatCollection
         * @type System.Collections.ObjectModel.Collection$1
         */
        FormatCollection: System.Collections.ObjectModel.Collection$1<Format> | null;
        /**
         * Retreives a list of the element formats
         *
         * @instance
         * @public
         * @this ElementFormat
         * @memberof ElementFormat
         * @param   {number}    separator    delimiter between format names
         * @return  {string}
         */
        getElementFormats(separator: number): string | null;
    }
    interface ElementFormatFunc extends Function {
        prototype: ElementFormat;
        /**
         * Create a new ElementFormat object
         *
         * @instance
         * @public
         * @this ElementFormat
         * @memberof ElementFormat
         * @return  {void}
         */
        new (): ElementFormat;
    }
    declare var ElementFormat: ElementFormatFunc;

    /**
     * Represents format information for an Element
     *
     * @public
     * @class ElementFormatInfo
     */
    interface ElementFormatInfo {
        /**
         * Get/Set the segment number that the format will apply to
         *
         * @instance
         * @public
         * @memberof ElementFormatInfo
         * @function SegmentOrdinalNumber
         * @type number
         */
        SegmentOrdinalNumber: number;
        /**
         * Get/Set the element number that the format will apply to
         *
         * @instance
         * @public
         * @memberof ElementFormatInfo
         * @function ElementOrdinalNumber
         * @type number
         */
        ElementOrdinalNumber: number;
        /**
         * Get/Set the composite element number that the format will apply to
         *
         * @instance
         * @public
         * @memberof ElementFormatInfo
         * @function SubElementOrdinalNumber
         * @type number
         */
        SubElementOrdinalNumber: number;
        /**
         * Get/Set the format for the element
         *
         * @instance
         * @public
         * @memberof ElementFormatInfo
         * @function ElementFormat
         * @type ElementFormat
         */
        ElementFormat: ElementFormat | null;
    }
    interface ElementFormatInfoFunc extends Function {
        prototype: ElementFormatInfo;
        /**
         * Create a new ElementFormatInfo
         *
         * @instance
         * @public
         * @this ElementFormatInfo
         * @memberof ElementFormatInfo
         * @return  {void}
         */
        new (): ElementFormatInfo;
    }
    declare var ElementFormatInfo: ElementFormatInfoFunc;

    /**
     * Used by EDI Rules Reader for element formatting
     *
     * @public
     * @class ElementFormatting
     */
    interface ElementFormatting {
        /**
         * Get/Set the element number that the formatting will apply to
         *
         * @instance
         * @public
         * @memberof ElementFormatting
         * @function ElementNumber
         * @type number
         */
        ElementNumber: number;
        /**
         * Get/set collection of formatting information
         *
         * @instance
         * @public
         * @memberof ElementFormatting
         * @function ElementFormatInfos
         * @type System.Collections.Generic.List$1
         */
        ElementFormatInfos: System.Collections.Generic.List$1<ElementFormatInfo> | null;
    }
    interface ElementFormattingFunc extends Function {
        prototype: ElementFormatting;
        /**
         * Create a new ElementFormatting
         *
         * @instance
         * @public
         * @this ElementFormatting
         * @memberof ElementFormatting
         * @return  {void}
         */
        new (): ElementFormatting;
    }
    declare var ElementFormatting: ElementFormattingFunc;

    /**
     * Represents a description that an element can have at a certain position
     *
     * @public
     * @class ElementDescriptionInfo
     */
    interface ElementDescriptionInfo {
        /**
         * Get/set the segment ordinal number
         *
         * @instance
         * @public
         * @memberof ElementDescriptionInfo
         * @function SegmentOrdinalNumber
         * @type number
         */
        SegmentOrdinalNumber: number;
        /**
         * Get/set the element ordinal number
         *
         * @instance
         * @public
         * @memberof ElementDescriptionInfo
         * @function ElementOrdinalNumber
         * @type number
         */
        ElementOrdinalNumber: number;
        /**
         * Get/set the element composite element ordinal number
         *
         * @instance
         * @public
         * @memberof ElementDescriptionInfo
         * @function SubElementOrdinalNumber
         * @type number
         */
        SubElementOrdinalNumber: number;
        /**
         * Gets the description for an element at this specific location
         *
         * @instance
         * @public
         * @memberof ElementDescriptionInfo
         * @function Description
         * @type string
         */
        Description: string | null;
    }
    interface ElementDescriptionInfoFunc extends Function {
        prototype: ElementDescriptionInfo;
        /**
         * Creates a new ElementDescriptionInfo
         *
         * @instance
         * @public
         * @this ElementDescriptionInfo
         * @memberof ElementDescriptionInfo
         * @return  {void}
         */
        new (): ElementDescriptionInfo;
    }
    declare var ElementDescriptionInfo: ElementDescriptionInfoFunc;

    /**
     * A collection of DataElement Objects
     *
     * @public
     * @class DataElements
     * @augments System.Collections.ObjectModel.Collection$1
     */
    interface DataElements extends System.Collections.ObjectModel.Collection$1<DataElement> {
        /**
         * Creates and adds a new DataElement with a value
         *
         * @instance
         * @public
         * @this DataElements
         * @memberof DataElements
         * @param   {string}    elementValue    value
         * @return  {void}
         */
        add$7(elementValue: string | null): void;
        /**
         * Adds the specified element value.
         *
         * @instance
         * @public
         * @this DataElements
         * @memberof DataElements
         * @param   {number}    elementValue    The element value.
         * @return  {void}
         */
        add$5(elementValue: number): void;
        /**
         * Adds the specified element value.
         *
         * @instance
         * @public
         * @this DataElements
         * @memberof DataElements
         * @param   {number}    elementValue    The element value.
         * @return  {void}
         */
        add$4(elementValue: number): void;
        /**
         * Adds the specified element value.
         *
         * @instance
         * @public
         * @this DataElements
         * @memberof DataElements
         * @param   {System.Decimal}    elementValue    The element value.
         * @return  {void}
         */
        add$3(elementValue: System.Decimal): void;
        /**
         * Adds the specified element value.
         *
         * @instance
         * @public
         * @this DataElements
         * @memberof DataElements
         * @param   {number}    elementValue    The element value.
         * @return  {void}
         */
        add$6(elementValue: number): void;
        /**
         * Adds the specified element value.
         *
         * @instance
         * @public
         * @this DataElements
         * @memberof DataElements
         * @param   {number}    elementValue    The element value.
         * @return  {void}
         */
        add$1(elementValue: number): void;
        /**
         * Adds the specified element value.
         *
         * @instance
         * @public
         * @this DataElements
         * @memberof DataElements
         * @param   {number}    elementValue    The element value.
         * @return  {void}
         */
        add$2(elementValue: number): void;
        /**
         * Creates and adds a series of data elements
         *
         * @instance
         * @public
         * @this DataElements
         * @memberof DataElements
         * @param   {Array.<string>}    elementValues    value
         * @return  {void}
         */
        add$15(elementValues: string[] | null): void;
        /**
         * Creates and adds a new DataElement with a value and description
         *
         * @instance
         * @public
         * @this DataElements
         * @memberof DataElements
         * @param   {string}    elementValue    value
         * @param   {string}    description     description
         * @return  {void}
         */
        add$14(elementValue: string | null, description: string | null): void;
        /**
         * Creates and adds a new DataElement with a value and element number
         *
         * @instance
         * @public
         * @this DataElements
         * @memberof DataElements
         * @param   {string}    elementValue     value
         * @param   {number}    elementNumber    element number
         * @return  {void}
         */
        add$8(elementValue: string | null, elementNumber: number): void;
        /**
         * Creates and adds a new DataElement to collection with a value and a minimum and maximum value length
         *
         * @instance
         * @public
         * @this DataElements
         * @memberof DataElements
         * @param   {string}    elementValue    value
         * @param   {number}    min             minimum length for value
         * @param   {number}    max             maximum length for value
         * @return  {void}
         */
        add$9(elementValue: string | null, min: number, max: number): void;
        /**
         * Creates and adds a new DataElement to collection
         *
         * @instance
         * @public
         * @this DataElements
         * @memberof DataElements
         * @param   {string}    elementValue     data element value
         * @param   {number}    elementNumber    element number
         * @param   {string}    description      description
         * @return  {void}
         */
        add$11(elementValue: string | null, elementNumber: number, description: string | null): void;
        /**
         * Creates and adds a new DataElement to collection
         *
         * @instance
         * @public
         * @this DataElements
         * @memberof DataElements
         * @param   {string}    elementValue     data element value
         * @param   {number}    elementNumber    element number
         * @param   {number}    minLength        minimum length for value
         * @param   {number}    maxLength        maximum length for value
         * @param   {string}    description      description of data element
         * @return  {void}
         */
        add$10(elementValue: string | null, elementNumber: number, minLength: number, maxLength: number, description: string | null): void;
        /**
         * Creates and adds a new DataElement to collection
         *
         * @instance
         * @public
         * @this DataElements
         * @memberof DataElements
         * @param   {string}            elementName       name of data element
         * @param   {number}            elementNumber     element number
         * @param   {Usage}             usage             usage of data element
         * @param   {Array.<string>}    acceptedValues    list of accepted values for this data element
         * @return  {void}
         */
        add$13(elementName: string | null, elementNumber: number, usage: Usage, acceptedValues: string[] | null): void;
        /**
         * Creates and adds a new DataElement to collection
         *
         * @instance
         * @public
         * @this DataElements
         * @memberof DataElements
         * @param   {string}            elementName                name of data element
         * @param   {number}            elementNumber              element number
         * @param   {Usage}             usage                      usage of data element
         * @param   {boolean}           uniqueValueOnRepetition    whether everytime this DataElement repeats a new value must be present
         * @param   {Array.<string>}    acceptedValues             list of accepted values for this data element
         * @return  {void}
         */
        add$12(elementName: string | null, elementNumber: number, usage: Usage, uniqueValueOnRepetition: boolean, acceptedValues: string[] | null): void;
    }
    interface DataElementsFunc extends Function {
        prototype: DataElements;
        /**
         * Creates a new DataElements Collection
         *
         * @instance
         * @public
         * @this DataElements
         * @memberof DataElements
         * @return  {void}
         */
        new (): DataElements;
    }
    declare var DataElements: DataElementsFunc;

    /** @namespace RDPCrystalEDILibrary */

    /**
     * Reponsible for retrieving EDI message specific data
     *
     * @public
     * @class RDPCrystalEDILibrary.EDISpecification
     */
    interface EDISpecification {
        /**
         * Whether this EDI file/data is X12 or EDIFACT standard
         *
         * @instance
         * @public
         * @memberof RDPCrystalEDILibrary.EDISpecification
         * @function EDIFileType
         * @type FileType
         */
        EDIFileType: FileType;
        /**
         * For X12, the value in the 1st element of a functional group (GS)
         *
         * @instance
         * @public
         * @memberof RDPCrystalEDILibrary.EDISpecification
         * @function X12VersionCode
         * @type string
         */
        X12VersionCode: string | null;
        /**
         * For X12, the value in the 8th element of a functional group (GS)
         *
         * @instance
         * @public
         * @memberof RDPCrystalEDILibrary.EDISpecification
         * @function X12Version
         * @type string
         */
        X12Version: string | null;
        /**
         * For X12, the value in the 1st element of a transaction header (ST)
         *
         * @instance
         * @public
         * @memberof RDPCrystalEDILibrary.EDISpecification
         * @function X12TransactionSetCode
         * @type string
         */
        X12TransactionSetCode: string | null;
        /**
         * @instance
         * @public
         * @memberof RDPCrystalEDILibrary.EDISpecification
         * @function EDIFACTMessageType
         * @type string
         */
        EDIFACTMessageType: string | null;
        /**
         * @instance
         * @public
         * @memberof RDPCrystalEDILibrary.EDISpecification
         * @function EDIFACTMessageVersion
         * @type string
         */
        EDIFACTMessageVersion: string | null;
        /**
         * @instance
         * @public
         * @memberof RDPCrystalEDILibrary.EDISpecification
         * @function EDIFACTReleaseVersion
         * @type string
         */
        EDIFACTReleaseVersion: string | null;
        /**
         * @instance
         * @public
         * @memberof RDPCrystalEDILibrary.EDISpecification
         * @function EDIFACTControllingAgency
         * @type string
         */
        EDIFACTControllingAgency: string | null;
        /**
         * @instance
         * @public
         * @memberof RDPCrystalEDILibrary.EDISpecification
         * @function InterchangeSenderIDQualifier
         * @type string
         */
        InterchangeSenderIDQualifier: string | null;
        /**
         * @instance
         * @public
         * @memberof RDPCrystalEDILibrary.EDISpecification
         * @function InterchangeSenderID
         * @type string
         */
        InterchangeSenderID: string | null;
        /**
         * @instance
         * @public
         * @memberof RDPCrystalEDILibrary.EDISpecification
         * @function InterchangeReceiverIDQualifier
         * @type string
         */
        InterchangeReceiverIDQualifier: string | null;
        /**
         * @instance
         * @public
         * @memberof RDPCrystalEDILibrary.EDISpecification
         * @function InterchangeReceiverID
         * @type string
         */
        InterchangeReceiverID: string | null;
        /**
         * @instance
         * @public
         * @memberof RDPCrystalEDILibrary.EDISpecification
         * @function Delimiters
         * @type Delimiters
         */
        Delimiters: Delimiters | null;
    }
    interface EDISpecificationFunc extends Function {
        prototype: EDISpecification;
        new (): EDISpecification;
        /**
         * @static
         * @public
         * @memberof RDPCrystalEDILibrary.EDISpecification
         * @default "\r\n"
         * @type string
         */
        TrimString: string | null;
        /**
         * Finds the FileType{X12,EDIFACT} from a string.
         *
         * @static
         * @public
         * @this RDPCrystalEDILibrary.EDISpecification
         * @memberof RDPCrystalEDILibrary.EDISpecification
         * @param   {string}      fileData    The path.
         * @return  {FileType}
         */
        findFileTypeFromString(fileData: string | null): FileType;
        /**
         * Finds the specification from string.
         *
         * @static
         * @public
         * @this RDPCrystalEDILibrary.EDISpecification
         * @memberof RDPCrystalEDILibrary.EDISpecification
         * @param   {string}                                   fileData    The file data.
         * @return  {RDPCrystalEDILibrary.EDISpecification}
         */
        findSpecificationFromString(fileData: string | null): RDPCrystalEDILibrary.EDISpecification | null;
    }
    var EDISpecification: EDISpecificationFunc;
    }
}

