import type { NobjcObject } from "objc-js";
import type { _NSController } from "./NSController.js";
import type { _NSCoder } from "../Foundation/NSCoder.js";
import type { _NSDictionary } from "../Foundation/NSDictionary.js";
import type { _NSUserDefaults } from "../Foundation/NSUserDefaults.js";
export declare class _NSUserDefaultsController extends _NSController {
    static alloc(): _NSUserDefaultsController;
    static new(): _NSUserDefaultsController;
    init(): _NSUserDefaultsController;
    static sharedUserDefaultsController(): _NSUserDefaultsController;
    /**
     * if defaults is nil, the controller uses [NSUserDefaults standardUserDefaults]; if initialValues is nil, revertToInitialValues: has no effect
     */
    initWithDefaults$initialValues$(defaults: _NSUserDefaults | null, initialValues: _NSDictionary | null): _NSUserDefaultsController;
    initWithCoder$(coder: _NSCoder): _NSUserDefaultsController | null;
    revert$(sender: NobjcObject | null): void;
    /** no effect if applies immediately */
    save$(sender: NobjcObject | null): void;
    /** no effect if no initial values are specified */
    revertToInitialValues$(sender: NobjcObject | null): void;
    defaults(): _NSUserDefaults;
    initialValues(): _NSDictionary | null;
    setInitialValues$(value: _NSDictionary | null): void;
    /** default: YES */
    appliesImmediately(): boolean;
    setAppliesImmediately$(value: boolean): void;
    hasUnappliedChanges(): boolean;
    /**
     * accessor object for default values (independent of whether they are derived directly from the NSUserDefaults or from the initial values)
     */
    values(): NobjcObject;
}
