import type { NobjcObject } from "objc-js";
import type { _NSCoder } from "./NSCoder.js";
import type { _NSData } from "./NSData.js";
import type { _NSKeyedArchiverDelegate } from "./NSKeyedArchiverDelegate.js";
import type { _NSMutableData } from "./NSMutableData.js";
import type { _NSString } from "./NSString.js";
import type { NSPropertyListFormat } from "./NSPropertyListFormat.js";
export declare class _NSKeyedArchiver extends _NSCoder {
    static alloc(): _NSKeyedArchiver;
    static new(): _NSKeyedArchiver;
    /**
     * Returns an \c NSData object containing the encoded form of the object graph whose root object is given, optionally disabling secure coding. If \c NSSecureCoding cannot be used, \c requiresSecureCoding may be turned off here; for improved security, however, \c requiresSecureCoding should be left enabled whenever possible. \c requiresSecureCoding ensures that all encoded objects conform to \c NSSecureCoding, preventing the possibility of encoding objects which cannot be decoded later. If the object graph cannot be encoded, returns \c nil and sets the \c error out parameter.
     * @deprecated Use -initRequiringSecureCoding: instead
     */
    static archivedDataWithRootObject$requiringSecureCoding$error$(object_: NobjcObject, requiresSecureCoding: boolean, error: NobjcObject | null): _NSData | null;
    /**
     * @deprecated Use +archivedDataWithRootObject:requiringSecureCoding:error: instead
     */
    static archivedDataWithRootObject$(rootObject: NobjcObject): _NSData;
    /**
     * @deprecated Use +archivedDataWithRootObject:requiringSecureCoding:error: and -writeToURL:options:error: instead
     */
    static archiveRootObject$toFile$(rootObject: NobjcObject, path: _NSString): boolean;
    static setClassName$forClass$(codedName: _NSString | null, cls: NobjcObject): void;
    /**
     * During encoding, the coder first checks with the coder's own table, then if there was no mapping there, the class's.
     */
    static classNameForClass$(cls: NobjcObject): _NSString | null;
    /**
     * Initializes the receiver for encoding an archive, optionally disabling secure coding. If \c NSSecureCoding cannot be used, \c requiresSecureCoding may be turned off here; for improved security, however, \c requiresSecureCoding should be left enabled whenever possible. \c requiresSecureCoding ensures that all encoded objects conform to \c NSSecureCoding, preventing the possibility of encoding objects which cannot be decoded later. To produce archives whose structure matches those previously encoded using \c +archivedDataWithRootObject, encode the top-level object in your archive for the \c NSKeyedArchiveRootObjectKey.
     */
    initRequiringSecureCoding$(requiresSecureCoding: boolean): _NSKeyedArchiver;
    /**
     * Initialize the archiver with empty data, ready for writing.
     * @deprecated Use -initRequiringSecureCoding: instead
     */
    init(): _NSKeyedArchiver;
    /** @deprecated Use -initRequiringSecureCoding: instead */
    initForWritingWithMutableData$(data: _NSMutableData): _NSKeyedArchiver;
    finishEncoding(): void;
    setClassName$forClass$(codedName: _NSString | null, cls: NobjcObject): void;
    classNameForClass$(cls: NobjcObject): _NSString | null;
    encodeObject$forKey$(object_: NobjcObject | null, key: _NSString): void;
    encodeConditionalObject$forKey$(object_: NobjcObject | null, key: _NSString): void;
    encodeBool$forKey$(value: boolean, key: _NSString): void;
    /** native int */
    encodeInt$forKey$(value: number, key: _NSString): void;
    encodeInt32$forKey$(value: number, key: _NSString): void;
    encodeInt64$forKey$(value: number, key: _NSString): void;
    encodeFloat$forKey$(value: number, key: _NSString): void;
    encodeDouble$forKey$(value: number, key: _NSString): void;
    encodeBytes$length$forKey$(bytes: NobjcObject | null, length: number, key: _NSString): void;
    delegate(): _NSKeyedArchiverDelegate | null;
    setDelegate$(value: _NSKeyedArchiverDelegate | null): void;
    outputFormat(): NSPropertyListFormat;
    setOutputFormat$(value: NSPropertyListFormat): void;
    /**
     * If encoding has not yet finished, then invoking this property will call finishEncoding and return the data. If you initialized the keyed archiver with a specific mutable data instance, then it will be returned from this property after finishEncoding is called.
     */
    encodedData(): _NSData;
    /**
     * Enables secure coding support on this keyed archiver. You do not need to enable secure coding on the archiver to enable secure coding on the unarchiver. Enabling secure coding on the archiver is a way for you to be sure that all classes that are encoded conform with NSSecureCoding (it will throw an exception if a class which does not NSSecureCoding is archived). Note that the getter is on the superclass, NSCoder. See NSCoder for more information about secure coding.
     */
    requiresSecureCoding(): boolean;
    setRequiresSecureCoding$(value: boolean): void;
}
