import type { FileSystemAdapter } from "./base.js"; /** * Whether `instance` was constructed directly as `constructorRef` rather than as * a subclass of it. * * `new.target === constructorRef` is the natural spelling and cannot be used * here: DNT rewrites every meta-property into its `import.meta` ponyfill when it * emits the npm package, so in the published build `new.target` is an * `ImportMeta`, the comparison is unconditionally false, and no adapter is ever * registered (see `scripts/build/dnt-meta-property-safety.ts`). * * `this.constructor === constructorRef` survives that transform but is * forgeable: a subclass that deletes or overwrites its own * `prototype.constructor` inherits the base's, so a subclass instance would be * classified as a directly constructed built-in. * * Prototype identity survives the transform and is not forgeable that way. A * class's `prototype` is a non-writable, non-configurable own property, and * `[[Construct]]` takes the new object's prototype from `new.target.prototype`, * so `new Subclass()` always arrives here carrying `Subclass.prototype`. */ export declare function isDirectConstruction(instance: object, constructorRef: { readonly prototype: object; }): boolean; /** Register a directly constructed built-in adapter backed by the host filesystem. */ export declare function markNativeFileSystemAdapter(adapter: FileSystemAdapter): void; /** Return true only for the exact built-in adapter object registered at construction. */ export declare function isNativeFileSystemAdapter(adapter: FileSystemAdapter): boolean; //# sourceMappingURL=native-file-system-provenance.d.ts.map