@tsonic/dotnet
Version:
TypeScript type definitions for .NET 10 BCL (Base Class Library)
604 lines (487 loc) • 19.2 kB
TypeScript
// Generated by tsbindgen - Architecture
// Namespace: System.Reflection.PortableExecutable
// Assembly: System.Reflection.Metadata
// Branded primitive types are sourced from @tsonic/types
import type { sbyte, byte, short, ushort, int, uint, long, ulong, int128, uint128, half, float, double, decimal, nint, nuint, char } from '@tsonic/types';
// Import support types from @tsonic/types
import type { ptr, ref } from "@tsonic/types";
// Import types from other namespaces
import type { IEnumerable_1 } from "../../System.Collections.Generic/internal/index.js";
import type { ImmutableArray_1 } from "../../System.Collections.Immutable/internal/index.js";
import type { Stream } from "../../System.IO/internal/index.js";
import type { MetadataRootBuilder } from "../../System.Reflection.Metadata.Ecma335/internal/index.js";
import type { Blob, BlobBuilder, BlobContentId, BlobReader, MetadataReaderProvider, MethodDefinitionHandle } from "../../System.Reflection.Metadata/internal/index.js";
import * as System_Internal from "../../System/internal/index.js";
import type { Action_2, Boolean as ClrBoolean, Byte, Enum, Func_2, Guid, IComparable, IConvertible, IDisposable, IFormatProvider, IFormattable, Int16, Int32, ISpanFormattable, Object as ClrObject, String as ClrString, Type, TypeCode, UInt16, UInt32, UInt64, ValueType, Void } from "../../System/internal/index.js";
// CLROf<T> - Maps ergonomic primitives to their CLR types for generic constraints
// This utility is used ONLY in generic type arguments to satisfy CLR interface constraints
// Value positions (parameters, return types) use lowercase primitives for ergonomics
export type CLROf<T> =
T extends sbyte ? System_Internal.SByte :
T extends short ? System_Internal.Int16 :
T extends int ? System_Internal.Int32 :
T extends long ? System_Internal.Int64 :
T extends int128 ? System_Internal.Int128 :
T extends nint ? System_Internal.IntPtr :
T extends byte ? System_Internal.Byte :
T extends ushort ? System_Internal.UInt16 :
T extends uint ? System_Internal.UInt32 :
T extends ulong ? System_Internal.UInt64 :
T extends uint128 ? System_Internal.UInt128 :
T extends nuint ? System_Internal.UIntPtr :
T extends half ? System_Internal.Half :
T extends float ? System_Internal.Single :
T extends double ? System_Internal.Double :
T extends decimal ? System_Internal.Decimal :
T extends char ? System_Internal.Char :
T extends boolean ? System_Internal.Boolean :
T extends string ? System_Internal.String :
T; // Identity fallback for non-primitive types
export enum Characteristics {
relocsStripped = 1,
executableImage = 2,
lineNumsStripped = 4,
localSymsStripped = 8,
aggressiveWSTrim = 16,
largeAddressAware = 32,
bytesReversedLo = 128,
bit32Machine = 256,
debugStripped = 512,
removableRunFromSwap = 1024,
netRunFromSwap = 2048,
system = 4096,
dll = 8192,
upSystemOnly = 16384,
bytesReversedHi = 32768
}
export enum CorFlags {
ilOnly = 1,
requires32Bit = 2,
ilLibrary = 4,
strongNameSigned = 8,
nativeEntryPoint = 16,
trackDebugData = 65536,
prefers32Bit = 131072
}
export enum DebugDirectoryEntryType {
unknown_ = 0,
coff = 1,
codeView = 2,
reproducible = 16,
embeddedPortablePdb = 17,
pdbChecksum = 19
}
export enum DllCharacteristics {
processInit = 1,
processTerm = 2,
threadInit = 4,
threadTerm = 8,
highEntropyVirtualAddressSpace = 32,
dynamicBase = 64,
forceIntegrity = 128,
nxCompatible = 256,
noIsolation = 512,
noSeh = 1024,
noBind = 2048,
appContainer = 4096,
wdmDriver = 8192,
controlFlowGuard = 16384,
terminalServerAware = 32768
}
export enum Machine {
unknown_ = 0,
I386 = 332,
wceMipsV2 = 361,
alpha = 388,
SH3 = 418,
sH3Dsp = 419,
SH3E = 420,
SH4 = 422,
SH5 = 424,
arm = 448,
thumb = 450,
armThumb2 = 452,
AM33 = 467,
powerPC = 496,
powerPCFP = 497,
IA64 = 512,
MIPS16 = 614,
alpha64 = 644,
mipsFpu = 870,
mipsFpu16 = 1126,
tricore = 1312,
ebc = 3772,
amd64 = 34404,
M32R = 36929,
arm64 = 43620,
loongArch32 = 25138,
loongArch64 = 25188,
riscV32 = 20530,
riscV64 = 20580,
riscV128 = 20776
}
export enum PEMagic {
PE32 = 267,
pE32Plus = 523
}
export enum PEStreamOptions {
default_ = 0,
leaveOpen = 1,
prefetchMetadata = 2,
prefetchEntireImage = 4,
isLoadedImage = 8
}
export enum SectionCharacteristics {
typeReg = 0,
typeDSect = 1,
typeNoLoad = 2,
typeGroup = 4,
typeNoPad = 8,
typeCopy = 16,
containsCode = 32,
containsInitializedData = 64,
containsUninitializedData = 128,
linkerOther = 256,
linkerInfo = 512,
typeOver = 1024,
linkerRemove = 2048,
linkerComdat = 4096,
memProtected = 16384,
noDeferSpecExc = 16384,
gpRel = 32768,
memFardata = 32768,
memSysheap = 65536,
memPurgeable = 131072,
mem16Bit = 131072,
memLocked = 262144,
memPreload = 524288,
align1Bytes = 1048576,
align2Bytes = 2097152,
align4Bytes = 3145728,
align8Bytes = 4194304,
align16Bytes = 5242880,
align32Bytes = 6291456,
align64Bytes = 7340032,
align128Bytes = 8388608,
align256Bytes = 9437184,
align512Bytes = 10485760,
align1024Bytes = 11534336,
align2048Bytes = 12582912,
align4096Bytes = 13631488,
align8192Bytes = 14680064,
alignMask = 15728640,
linkerNRelocOvfl = 16777216,
memDiscardable = 33554432,
memNotCached = 67108864,
memNotPaged = 134217728,
memShared = 268435456,
memExecute = 536870912,
memRead = 1073741824,
memWrite = 2147483648
}
export enum Subsystem {
unknown_ = 0,
native = 1,
windowsGui = 2,
windowsCui = 3,
oS2Cui = 5,
posixCui = 7,
nativeWindows = 8,
windowsCEGui = 9,
efiApplication = 10,
efiBootServiceDriver = 11,
efiRuntimeDriver = 12,
efiRom = 13,
xbox = 14,
windowsBootApplication = 16
}
export interface CodeViewDebugDirectoryData$instance {
readonly age: int;
readonly guid: Guid;
readonly path: string;
}
export const CodeViewDebugDirectoryData: {
new(): CodeViewDebugDirectoryData$instance;
};
export type CodeViewDebugDirectoryData = CodeViewDebugDirectoryData$instance;
export interface DebugDirectoryEntry$instance {
readonly dataPointer: int;
readonly dataRelativeVirtualAddress: int;
readonly dataSize: int;
readonly isPortableCodeView: boolean;
readonly majorVersion: ushort;
readonly minorVersion: ushort;
readonly stamp: uint;
readonly type_: DebugDirectoryEntryType;
}
export const DebugDirectoryEntry: {
new(stamp: uint, majorVersion: ushort, minorVersion: ushort, type_: DebugDirectoryEntryType, dataSize: int, dataRelativeVirtualAddress: int, dataPointer: int): DebugDirectoryEntry$instance;
};
export type DebugDirectoryEntry = DebugDirectoryEntry$instance;
export interface DirectoryEntry$instance {
readonly relativeVirtualAddress: int;
readonly size: int;
}
export const DirectoryEntry: {
new(relativeVirtualAddress: int, size: int): DirectoryEntry$instance;
};
export type DirectoryEntry = DirectoryEntry$instance;
export interface PdbChecksumDebugDirectoryData$instance {
readonly algorithmName: string;
readonly checksum: ImmutableArray_1<CLROf<byte>>;
}
export const PdbChecksumDebugDirectoryData: {
new(): PdbChecksumDebugDirectoryData$instance;
};
export type PdbChecksumDebugDirectoryData = PdbChecksumDebugDirectoryData$instance;
export interface PEMemoryBlock$instance {
readonly length: int;
readonly pointer: ptr<byte>;
getContent(): ImmutableArray_1<CLROf<byte>>;
getContent(start: int, length: int): ImmutableArray_1<CLROf<byte>>;
getReader(): BlobReader;
getReader(start: int, length: int): BlobReader;
}
export const PEMemoryBlock: {
new(): PEMemoryBlock$instance;
};
export type PEMemoryBlock = PEMemoryBlock$instance;
export interface SectionHeader$instance {
readonly name: string;
readonly numberOfLineNumbers: ushort;
readonly numberOfRelocations: ushort;
readonly pointerToLineNumbers: int;
readonly pointerToRawData: int;
readonly pointerToRelocations: int;
readonly sectionCharacteristics: SectionCharacteristics;
readonly sizeOfRawData: int;
readonly virtualAddress: int;
readonly virtualSize: int;
}
export const SectionHeader: {
new(): SectionHeader$instance;
};
export type SectionHeader = SectionHeader$instance;
export interface SectionLocation$instance {
readonly pointerToRawData: int;
readonly relativeVirtualAddress: int;
}
export const SectionLocation: {
new(relativeVirtualAddress: int, pointerToRawData: int): SectionLocation$instance;
};
export type SectionLocation = SectionLocation$instance;
export interface CoffHeader$instance {
readonly characteristics: Characteristics;
readonly machine: Machine;
readonly numberOfSections: short;
readonly numberOfSymbols: int;
readonly pointerToSymbolTable: int;
readonly sizeOfOptionalHeader: short;
readonly timeDateStamp: int;
}
export const CoffHeader: {
new(): CoffHeader$instance;
};
export type CoffHeader = CoffHeader$instance;
export interface CorHeader$instance {
readonly codeManagerTableDirectory: DirectoryEntry;
readonly entryPointTokenOrRelativeVirtualAddress: int;
readonly exportAddressTableJumpsDirectory: DirectoryEntry;
readonly flags: CorFlags;
readonly majorRuntimeVersion: ushort;
readonly managedNativeHeaderDirectory: DirectoryEntry;
readonly metadataDirectory: DirectoryEntry;
readonly minorRuntimeVersion: ushort;
readonly resourcesDirectory: DirectoryEntry;
readonly strongNameSignatureDirectory: DirectoryEntry;
readonly vtableFixupsDirectory: DirectoryEntry;
}
export const CorHeader: {
new(): CorHeader$instance;
};
export type CorHeader = CorHeader$instance;
export interface DebugDirectoryBuilder$instance {
addCodeViewEntry(pdbPath: string, pdbContentId: BlobContentId, portablePdbVersion: ushort): void;
addCodeViewEntry(pdbPath: string, pdbContentId: BlobContentId, portablePdbVersion: ushort, age: int): void;
addEmbeddedPortablePdbEntry(debugMetadata: BlobBuilder, portablePdbVersion: ushort): void;
addEntry(type_: DebugDirectoryEntryType, version: uint, stamp: uint): void;
addEntry<TData>(type_: DebugDirectoryEntryType, version: uint, stamp: uint, data: TData, dataSerializer: Action_2<BlobBuilder, TData>): void;
addPdbChecksumEntry(algorithmName: string, checksum: ImmutableArray_1<CLROf<byte>>): void;
addReproducibleEntry(): void;
}
export const DebugDirectoryBuilder: {
new(): DebugDirectoryBuilder$instance;
};
export type DebugDirectoryBuilder = DebugDirectoryBuilder$instance;
export interface ManagedPEBuilder$instance extends PEBuilder {
sign(peImage: BlobBuilder, signatureProvider: Func_2<IEnumerable_1<Blob>, byte[]>): void;
}
export const ManagedPEBuilder: {
new(header: PEHeaderBuilder, metadataRootBuilder: MetadataRootBuilder, ilStream: BlobBuilder, mappedFieldData: BlobBuilder, managedResources: BlobBuilder, nativeResources: ResourceSectionBuilder, debugDirectoryBuilder: DebugDirectoryBuilder, strongNameSignatureSize: int, entryPoint: MethodDefinitionHandle, flags: CorFlags, deterministicIdProvider: Func_2<IEnumerable_1<Blob>, BlobContentId>): ManagedPEBuilder$instance;
readonly managedResourcesDataAlignment: int;
readonly mappedFieldDataAlignment: int;
};
export type ManagedPEBuilder = ManagedPEBuilder$instance;
export interface PEBuilder$instance {
readonly header: PEHeaderBuilder;
readonly idProvider: Func_2<IEnumerable_1<Blob>, BlobContentId>;
readonly isDeterministic: boolean;
serialize(builder: BlobBuilder): BlobContentId;
}
export const PEBuilder: {
};
export type PEBuilder = PEBuilder$instance;
export interface PEDirectoriesBuilder$instance {
addressOfEntryPoint: int;
baseRelocationTable: DirectoryEntry;
boundImportTable: DirectoryEntry;
copyrightTable: DirectoryEntry;
corHeaderTable: DirectoryEntry;
debugTable: DirectoryEntry;
delayImportTable: DirectoryEntry;
exceptionTable: DirectoryEntry;
exportTable: DirectoryEntry;
globalPointerTable: DirectoryEntry;
importAddressTable: DirectoryEntry;
importTable: DirectoryEntry;
loadConfigTable: DirectoryEntry;
resourceTable: DirectoryEntry;
threadLocalStorageTable: DirectoryEntry;
}
export const PEDirectoriesBuilder: {
new(): PEDirectoriesBuilder$instance;
};
export type PEDirectoriesBuilder = PEDirectoriesBuilder$instance;
export interface PEHeader$instance {
readonly addressOfEntryPoint: int;
readonly baseOfCode: int;
readonly baseOfData: int;
readonly baseRelocationTableDirectory: DirectoryEntry;
readonly boundImportTableDirectory: DirectoryEntry;
readonly certificateTableDirectory: DirectoryEntry;
readonly checkSum: uint;
readonly copyrightTableDirectory: DirectoryEntry;
readonly corHeaderTableDirectory: DirectoryEntry;
readonly debugTableDirectory: DirectoryEntry;
readonly delayImportTableDirectory: DirectoryEntry;
readonly dllCharacteristics: DllCharacteristics;
readonly exceptionTableDirectory: DirectoryEntry;
readonly exportTableDirectory: DirectoryEntry;
readonly fileAlignment: int;
readonly globalPointerTableDirectory: DirectoryEntry;
readonly imageBase: ulong;
readonly importAddressTableDirectory: DirectoryEntry;
readonly importTableDirectory: DirectoryEntry;
readonly loadConfigTableDirectory: DirectoryEntry;
readonly magic: PEMagic;
readonly majorImageVersion: ushort;
readonly majorLinkerVersion: byte;
readonly majorOperatingSystemVersion: ushort;
readonly majorSubsystemVersion: ushort;
readonly minorImageVersion: ushort;
readonly minorLinkerVersion: byte;
readonly minorOperatingSystemVersion: ushort;
readonly minorSubsystemVersion: ushort;
readonly numberOfRvaAndSizes: int;
readonly resourceTableDirectory: DirectoryEntry;
readonly sectionAlignment: int;
readonly sizeOfCode: int;
readonly sizeOfHeaders: int;
readonly sizeOfHeapCommit: ulong;
readonly sizeOfHeapReserve: ulong;
readonly sizeOfImage: int;
readonly sizeOfInitializedData: int;
readonly sizeOfStackCommit: ulong;
readonly sizeOfStackReserve: ulong;
readonly sizeOfUninitializedData: int;
readonly subsystem: Subsystem;
readonly threadLocalStorageTableDirectory: DirectoryEntry;
}
export const PEHeader: {
new(): PEHeader$instance;
};
export type PEHeader = PEHeader$instance;
export interface PEHeaderBuilder$instance {
readonly dllCharacteristics: DllCharacteristics;
readonly fileAlignment: int;
readonly imageBase: ulong;
readonly imageCharacteristics: Characteristics;
readonly machine: Machine;
readonly majorImageVersion: ushort;
readonly majorLinkerVersion: byte;
readonly majorOperatingSystemVersion: ushort;
readonly majorSubsystemVersion: ushort;
readonly minorImageVersion: ushort;
readonly minorLinkerVersion: byte;
readonly minorOperatingSystemVersion: ushort;
readonly minorSubsystemVersion: ushort;
readonly sectionAlignment: int;
readonly sizeOfHeapCommit: ulong;
readonly sizeOfHeapReserve: ulong;
readonly sizeOfStackCommit: ulong;
readonly sizeOfStackReserve: ulong;
readonly subsystem: Subsystem;
}
export const PEHeaderBuilder: {
new(machine: Machine, sectionAlignment: int, fileAlignment: int, imageBase: ulong, majorLinkerVersion: byte, minorLinkerVersion: byte, majorOperatingSystemVersion: ushort, minorOperatingSystemVersion: ushort, majorImageVersion: ushort, minorImageVersion: ushort, majorSubsystemVersion: ushort, minorSubsystemVersion: ushort, subsystem: Subsystem, dllCharacteristics: DllCharacteristics, imageCharacteristics: Characteristics, sizeOfStackReserve: ulong, sizeOfStackCommit: ulong, sizeOfHeapReserve: ulong, sizeOfHeapCommit: ulong): PEHeaderBuilder$instance;
createExecutableHeader(): PEHeaderBuilder;
createLibraryHeader(): PEHeaderBuilder;
};
export type PEHeaderBuilder = PEHeaderBuilder$instance;
export interface PEHeaders$instance {
readonly coffHeader: CoffHeader;
readonly coffHeaderStartOffset: int;
readonly corHeader: CorHeader;
readonly corHeaderStartOffset: int;
readonly isCoffOnly: boolean;
readonly isConsoleApplication: boolean;
readonly isDll: boolean;
readonly isExe: boolean;
readonly metadataSize: int;
readonly metadataStartOffset: int;
readonly peHeader: PEHeader;
readonly peHeaderStartOffset: int;
readonly sectionHeaders: ImmutableArray_1<SectionHeader>;
getContainingSectionIndex(relativeVirtualAddress: int): int;
tryGetDirectoryOffset(directory: DirectoryEntry, offset: { value: ref<int> }): boolean;
}
export const PEHeaders: {
new(peStream: Stream): PEHeaders$instance;
new(peStream: Stream, size: int): PEHeaders$instance;
new(peStream: Stream, size: int, isLoadedImage: boolean): PEHeaders$instance;
};
export type PEHeaders = PEHeaders$instance;
export interface PEReader$instance {
readonly hasMetadata: boolean;
readonly isEntireImageAvailable: boolean;
readonly isLoadedImage: boolean;
readonly peHeaders: PEHeaders;
dispose(): void;
getEntireImage(): PEMemoryBlock;
getMetadata(): PEMemoryBlock;
getSectionData(relativeVirtualAddress: int): PEMemoryBlock;
getSectionData(sectionName: string): PEMemoryBlock;
readCodeViewDebugDirectoryData(entry: DebugDirectoryEntry): CodeViewDebugDirectoryData;
readDebugDirectory(): ImmutableArray_1<DebugDirectoryEntry>;
readEmbeddedPortablePdbDebugDirectoryData(entry: DebugDirectoryEntry): MetadataReaderProvider;
readPdbChecksumDebugDirectoryData(entry: DebugDirectoryEntry): PdbChecksumDebugDirectoryData;
tryOpenAssociatedPortablePdb(peImagePath: string, pdbFileStreamProvider: Func_2<CLROf<string>, Stream>, pdbReaderProvider: { value: ref<MetadataReaderProvider> }, pdbPath: { value: ref<string> }): boolean;
}
export const PEReader: {
new(peImage: ptr<byte>, size: int): PEReader$instance;
new(peImage: ptr<byte>, size: int, isLoadedImage: boolean): PEReader$instance;
new(peStream: Stream): PEReader$instance;
new(peStream: Stream, options: PEStreamOptions): PEReader$instance;
new(peStream: Stream, options: PEStreamOptions, size: int): PEReader$instance;
new(peImage: ImmutableArray_1<CLROf<byte>>): PEReader$instance;
};
export interface __PEReader$views {
As_IDisposable(): System_Internal.IDisposable$instance;
}
export interface PEReader$instance extends System_Internal.IDisposable$instance {}
export type PEReader = PEReader$instance & __PEReader$views;
export interface ResourceSectionBuilder$instance {
}
export const ResourceSectionBuilder: {
};
export type ResourceSectionBuilder = ResourceSectionBuilder$instance;