declare namespace SigApi {
    interface File {
        readonly uid: number
        readonly dpne: string
        readonly size: number
        readonly mode: string
        readonly attribute: number
        readonly data: Blob
        readonly atime: number
        readonly mtime: number
        readonly ctime: number
        readonly adate: number
        readonly mdate: number
        readonly cdate: number
        readonly root: boolean
        readonly nodes: File[]
        /**
         * Returns the uid which was used in the call of the command
         * 
         * @returns {number} The identifier which was used in the command call
         */
        getUid(): number
        /**
         * The result of this method depends on where this method is called from:
         * from getRoot(): the absolutePath parameter has no effect
         *            File.getDPNE(true or false) = 'root'
         *            File.getNodes() -> node.getDPNE(true or false) = e.g. 'C'
         * 
         * from readDir():
         *           File.parent.getDPNE(true or false) = e.g. 'c:/lvd'
         *           File.parent.getNodes() -> node.getDPNE(false) = e.g. 'prj' if node is a directory
         *                                  -> node.getDPNE(true) = e.g. 'c:/lvd/prj' if node is a directory
         *                                  -> node.getDPNE(false) = e.g. 'readme.txt' if node is a file
         *                                  -> node.getDPNE(true) = e.g. 'c:/lvd/readme.txt' if node is a file
         * 
         * @param {boolean} absolutePath 
         * @returns {string} The DPNE
         */
        getDPNE(absolutePath: boolean): string
        /**
         * Returns the Size of a file
         * 
         * @returns {number} The filesize
         */
        getSize(): number
        /**
         * Gets the Attributes of a file as BitMask
         * 
         * @returns {number} BitMask of the file attributes
         * 
         * file attributes:
         * *  CONST.ATTRIBUTE_READONLY = 0x0001 (read only)
         * *  CONST.ATTRIBUTE_HIDDEN = 0x0002 (hidden)
         * *  CONST.ATTRIBUTE_SYSTEM = 0x0004 (system file)
         * *  CONST.ATTRIBUTE_DIRECTORY = 0x0010 (folder)
         * *  CONST.ATTRIBUTE_ARCHIVE = 0x0020 (archived)
         */
        getAttribute(): number
        /**
         * Gets the data of a file
         * 
         * @returns {Blob|null} The data as blob
         */
        getData(): Blob | null
        /**
         * Gets the access time of a file in the Sigmatek timeformat
         * 
         * @returns {number} The access time
         */
        getATime(): number
        /**
         * Gets the modified time of a file in the Sigmatek timeformat
         * 
         * @returns {number} The modified time
         */
        getMTime(): number
        /**
         * Gets the created time of a file in the Sigmatek timeformat
         * 
         * @returns {number} The created time
         */
        getCTime(): number
        /**
         * Gets the access date of a file in the Sigmatek dateformat
         * 
         * @returns {number} The access date
         */
        getADate(): number
        /**
         * Gets the modified date of a file in the Sigmatek dateformat
         * 
         * @returns {number} The modified date
         */
        getMDate(): number
        /**
         * Gets the created date of a file in the Sigmatek dateformat
         * 
         * @returns {number} The created date
         */
        getCDate(): number
        /**
         * Gets all child Nodes
         * 
         * @returns {File[]} The childnodes as array of files
         */
        getNodes(): File[]
        /**
         * Returns true, if this node is the root
         * 
         * @returns {boolean} true, if this node is the root
         */
        isRoot(): boolean
    }
}
