/* Options:
Date: 2025-04-11 08:27:30
Version: 8.52
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://taxfiling.pwc.de

//GlobalNamespace: 
//MakePropertiesOptional: False
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddImplicitVersion: 
//AddDescriptionAsComments: True
IncludeTypes: VersionCheck.*
//ExcludeTypes: 
//DefaultImports: 
*/


export interface IReturn<T>
{
    createResponse(): T;
}

/** @description A base service to retrieve the list of all product and file versions of used ERiC-libraries. */
// @Api(Description="A base service to retrieve the list of all product and file versions of used ERiC-libraries.")
export class VersionCheckBase implements IGet
{

    public constructor(init?: Partial<VersionCheckBase>) { (Object as any).assign(this, init); }
}

/** @description Represent a version of the internally used test module. */
// @Api(Description="Represent a version of the internally used test module.")
export class PruefModul
{
    /** @description The tax data type version of the test module. */
    // @ApiMember(Description="The tax data type version of the test module.")
    public datenartVersion?: string;

    /** @description The label of the test module. */
    // @ApiMember(Description="The label of the test module.")
    public label?: string;

    /** @description The runtime of the test module. */
    // @ApiMember(Description="The runtime of the test module.")
    public runtime?: string;

    public constructor(init?: Partial<PruefModul>) { (Object as any).assign(this, init); }
}

/** @description Represents Represents an ERiC dynamic library. */
// @Api(Description="Represents Represents an ERiC dynamic library.")
export class Bibliothek
{
    /** @description The name of the library. */
    // @ApiMember(Description="The name of the library.")
    public name?: string;

    /** @description The product version of the library. */
    // @ApiMember(Description="The product version of the library.")
    public produktversion?: string;

    /** @description The file version of the library. */
    // @ApiMember(Description="The file version of the library.")
    public dateiversion?: string;

    /** @description The list of test modules of the library. */
    // @ApiMember(Description="The list of test modules of the library.")
    public pruefModulen: PruefModul[] = [];

    public constructor(init?: Partial<Bibliothek>) { (Object as any).assign(this, init); }
}

/** @description Represents a structure that encapsulates a list of ERiC dynamic libraries. */
// @Api(Description="Represents a structure that encapsulates a list of ERiC dynamic libraries.")
export class EricVersion
{
    /** @description The list of available ERiC dynamic libraries. */
    // @ApiMember(Description="The list of available ERiC dynamic libraries.")
    public bibliotheken: Bibliothek[] = [];

    public constructor(init?: Partial<EricVersion>) { (Object as any).assign(this, init); }
}

/** @description Represent a base response that encapsulate any ERiC API function return value. */
// @Api(Description="Represent a base response that encapsulate any ERiC API function return value.")
export class EricFehlerCodeResponse extends ServiceReponseBase
{
    /** @description The status code that the ERiC API function returns. */
    // @ApiMember(Description="The status code that the ERiC API function returns.")
    public statusCode: EricFehlerCode;

    /** @description The status message that the ERiC API function returns. */
    // @ApiMember(Description="The status message that the ERiC API function returns.")
    public statusText: string;

    public constructor(init?: Partial<EricFehlerCodeResponse>) { super(init); (Object as any).assign(this, init); }
}

/** @description Represents a type that encapsulates the versions of ERiC library components. */
// @Api(Description="Represents a type that encapsulates the versions of ERiC library components.")
export class EricVersionResponse extends EricFehlerCodeResponse
{
    /** @description The version of an ERiC library component. */
    // @ApiMember(Description="The version of an ERiC library component.")
    public rueckgabe?: EricVersion;

    public constructor(init?: Partial<EricVersionResponse>) { super(init); (Object as any).assign(this, init); }
}

/** @description A synchronous service to retrieve the list of all product and file versions of used ERiC-libraries. */
// @Route("/VersionCheck", "GET")
// @Api(Description="A synchronous service to retrieve the list of all product and file versions of used ERiC-libraries.")
export class VersionCheck extends VersionCheckBase implements IReturn<EricVersionResponse>
{

    public constructor(init?: Partial<VersionCheck>) { super(init); (Object as any).assign(this, init); }
    public getTypeName() { return 'VersionCheck'; }
    public getMethod() { return 'GET'; }
    public createResponse() { return new EricVersionResponse(); }
}