import { type Tuple } from 'utilium'; import { SLComponentRecord } from './SLComponentRecord.js'; export declare const enum EntrySignature { CE = 17221, PD = 20548, SP = 21328, ST = 21332, ER = 17746, ES = 17747, PX = 20568, PN = 20558, SL = 21324, NM = 20045, CL = 17228, PL = 20556, RE = 21061, TF = 21574, SF = 21318, RR = 21074 } /** * Note, GNU ISO is used for reference. * @see https://git.savannah.gnu.org/cgit/libcdio.git/tree/include/cdio/rock.h */ /** * Base system use entry */ export declare class SystemUseEntry { protected data: Uint8Array; constructor(data: Uint8Array); signature: EntrySignature; get signatureString(): string; length: number; suVersion: number; } /** * Continuation entry. */ export declare class CEEntry extends SystemUseEntry { protected _entries: SystemUseEntry[]; /** * Logical block address of the continuation area. */ extent: bigint; /** * Offset into the logical block. */ offset: bigint; /** * Length of the continuation area. */ size: bigint; entries(data: Uint8Array): SystemUseEntry[]; } /** * Padding entry. */ export declare class PDEntry extends SystemUseEntry { } /** * Identifies that SUSP is in-use. */ export declare class SPEntry extends SystemUseEntry { magic: Tuple; checkMagic(): boolean; skip: number; } /** * Identifies the end of the SUSP entries. */ export declare class STEntry extends SystemUseEntry { } /** * Specifies system-specific extensions to SUSP. */ export declare class EREntry extends SystemUseEntry { idLength: number; descriptorLength: number; sourceLength: number; extensionVersion: number; get extensionIdentifier(): string; get extensionDescriptor(): string; get extensionSource(): string; } export declare class ESEntry extends SystemUseEntry { extensionSequence: number; } /** * RockRidge: Marks that RockRidge is in use * @deprecated */ export declare class RREntry extends SystemUseEntry { } /** * RockRidge: Records POSIX file attributes. */ export declare class PXEntry extends SystemUseEntry { mode: bigint; nlinks: bigint; uid: bigint; gid: bigint; inode: bigint; } /** * RockRidge: Records POSIX device number. */ export declare class PNEntry extends SystemUseEntry { dev_high: bigint; dev_low: bigint; } /** * RockRidge: Records symbolic link */ export declare class SLEntry extends SystemUseEntry { flags: number; get continueFlag(): number; get componentRecords(): SLComponentRecord[]; } export declare function constructSystemUseEntry(data: Uint8Array): SystemUseEntry; export declare function constructSystemUseEntries(data: Uint8Array, i: number, length: bigint, isoData: Uint8Array): SystemUseEntry[]; export declare const enum NMFlags { CONTINUE = 1, CURRENT = 2, PARENT = 4 } /** * RockRidge: Records alternate file name */ export declare class NMEntry extends SystemUseEntry { flags: NMFlags; name(getString: (data: Uint8Array) => string): string; } /** * RockRidge: Records child link */ export declare class CLEntry extends SystemUseEntry { childDirectoryLba: number; } /** * RockRidge: Records parent link. */ export declare class PLEntry extends SystemUseEntry { parentDirectoryLba: number; } /** * RockRidge: Records relocated directory. */ export declare class REEntry extends SystemUseEntry { } export declare const enum TFFlag { CREATION = 1, MODIFY = 2, ACCESS = 4, ATTRIBUTES = 8, BACKUP = 16, EXPIRATION = 32, EFFECTIVE = 64, LONG_FORM = 128 } /** * RockRidge: Records file timestamps */ export declare class TFEntry extends SystemUseEntry { flags: number; private _getDate; get creation(): Date | undefined; get modify(): Date | undefined; get access(): Date | undefined; get backup(): Date | undefined; get expiration(): Date | undefined; get effective(): Date | undefined; } /** * RockRidge: File data in sparse format. */ export declare class SFEntry extends SystemUseEntry { virtualSizeHigh: bigint; virtualSizeLow: bigint; tableDepth: number; }