/// <reference path="./sigApi.ApiBase.d.ts" />
/// <reference path="./sigApi.ProjectInfo.d.ts" />

declare namespace SigApi {
    interface ApiProjectInfo extends ApiBase {
        /**
         * Converts a version represented as string to a version represented as number
         * 
         * @param {string} strVersion version, represented as string
         * @param {string} [delimiter='.']  delimiter between versions in strVersion
         * @returns {number} version, represented as number
         */
        getVersionAsNumber(strVersion: string, delimiter?: string): number
        /**
         * Returns project infos, sent by DataService
         *
         * @returns {Promise} Promise -> resolve: ({ ProjectVersion: number, ProjectBuild: number, ProjectName: string, ProjectCrc: number }) => void, reject: (string) => void
         * Returns a Promise, which is resolved with ProjectVersion, ProjectBuild, ProjectName and ProjectCrc
         * The Promise gets rejected with a string describing the reason
         */
        getDSProjectInfo(): Promise<{ ProjectVersion: number, ProjectBuild: number, ProjectName: string, ProjectCrc: number }>
        /**
         * Returns infos about the LASAL VISUDesigner
         *
         * @returns {Promise} Promise -> resolve: ({ FileVersion: string, PrjVersion: string, PrjName: string, LVDVersion: string, PrjRTVersion: string, PrjDesignerRTVersion: string }) => void, reject: (string) => void
         * Returns a Promise, which is resolved with FileVersion, PrjVersion, LVDVersion, PrjRTVersion and PrjDesignerRTVersion
         * The Promise gets rejected with a string describing the reason
         */
        getLVDInfo(): Promise<{ FileVersion: string, PrjVersion: string, PrjName: string, LVDVersion: string, PrjRTVersion: string, PrjDesignerRTVersion: string }>
        /**
         * Returns infos about the Runtime
         *
         * @returns {Promise} Promise -> resolve: ({ Version: string, BuildNumber: number, DBGVersion: string }) => void, reject: (string) => void
         * Returns a Promise, which is resolved with Version and BuildNumber
         * The Promise gets rejected with a string describing the reason
         */
        getRTInfo(): Promise<{ Version: string, BuildNumber: number, DBGVersion: string }>
        /**
         * Returns infos about the DataService
         *
         * @returns {Promise} Promise -> resolve: ({ Version: string, BuildNumber: number }) => void, reject: (string) => void
         * Returns a Promise, which is resolved with Version and BuildNumber
         * The Promise gets rejected with a string describing the reason
         */
        getDSInfo(): Promise<{ Version: string, BuildNumber: number }>
        /**
         * Returns infos about the LASAL VISUDesigner, Runtime and DataService
         *
         * @returns {Promise} Promise -> resolve: ({@link ProjectInfo}) => void, reject: (string) => void
         * Returns a Promise, which is resolved with a ProjectInfo
         * The Promise gets rejected with a string describing the reason
         */
        getProjectInfo(): Promise<ProjectInfo>
    }
}
