/** * Native addon allowlist shared by the build and lazy runtime loader. * * Adding a platform is an explicit release decision: declare its exact target * and canonical filename here, then produce that file in the release matrix. * The bundle stages only declared files and embeds per-build integrity data. */ export type NativeArtifactPlatform = 'android' | 'darwin' | 'freebsd' | 'linux' | 'win32'; export type NativeArtifactLibc = 'gnu' | 'musl'; export interface NativeArtifactDeclaration { readonly triple: string; readonly filename: string; readonly platform: NativeArtifactPlatform; readonly arch: string; readonly libc?: NativeArtifactLibc; /** Optional external prebuild. Packages must be explicitly declared and scoped. */ readonly packageName?: string; } export interface NativeArtifactManifest { readonly schemaVersion: number; readonly bindingInterfaceVersion: number; readonly artifacts: readonly NativeArtifactDeclaration[]; } export interface StagedNativeArtifact extends NativeArtifactDeclaration { readonly sha256: string; readonly byteLength: number; } export interface StagedNativeArtifactManifest { readonly schemaVersion: number; readonly bindingInterfaceVersion: number; readonly artifacts: readonly StagedNativeArtifact[]; } export declare const NATIVE_ARTIFACT_MANIFEST: { readonly schemaVersion: 1; readonly bindingInterfaceVersion: 1; readonly artifacts: readonly [{ readonly triple: "darwin-arm64"; readonly filename: "zynor-native.darwin-arm64.node"; readonly platform: "darwin"; readonly arch: "arm64"; }]; }; /** Validate canonical target names, runtime identity, and duplicate-free intake. */ export declare function validateNativeArtifactManifest(manifest: NativeArtifactManifest): void; /** * Reject undeclared `.node` files and return the declared subset available in * this build workspace. A release may contain one target from a larger matrix. */ export declare function declaredNativeArtifactsPresent(filenames: readonly string[], manifest?: NativeArtifactManifest): readonly NativeArtifactDeclaration[]; /** * Release/package boundary: require the complete manifest, not merely a valid * host-built subset. Individual target jobs may use * `declaredNativeArtifactsPresent`; an aggregated package must use this stricter * check so adding a target can never silently ship an incomplete matrix. */ export declare function completeDeclaredNativeArtifactSet(filenames: readonly string[], manifest?: NativeArtifactManifest): readonly NativeArtifactDeclaration[]; /** Exact Cargo compilation target corresponding to a declared package target. */ export declare function cargoTargetForNativeArtifact(artifact: NativeArtifactDeclaration): string; export declare function cargoTargetsForNativeManifest(manifest?: NativeArtifactManifest): readonly string[]; export declare function nativeArtifactsForRuntime(artifacts: readonly T[], platform: string, arch: string, libc?: NativeArtifactLibc): readonly T[]; /** * Verify that bytes staged for a declared target carry the corresponding * native object header. New platform families must add an explicit validator * here before their artifacts can enter a package. */ export declare function validateNativeArtifactBinary(artifact: NativeArtifactDeclaration, bytes: Uint8Array): void; /** Parse and bind embedded integrity data back to the source allowlist. */ export declare function parseStagedNativeArtifactManifest(value: unknown): StagedNativeArtifactManifest;