import type { NobjcObject } from "objc-js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _CAMediaTimingFunction } from "./CAMediaTimingFunction.js";
export declare class _CATransaction extends _NSObject {
    static alloc(): _CATransaction;
    static new(): _CATransaction;
    init(): _CATransaction;
    /** Begin a new transaction for the current thread; nests. */
    static begin(): void;
    /** Commit all changes made during the current transaction. */
    static commit(): void;
    /**
     * Commits any extant implicit transaction. Will delay the actual commit until any nested explicit transactions have completed.
     */
    static flush(): void;
    /**
     * Methods to lock and unlock the global lock. Layer methods automatically obtain this while modifying shared state, but callers may need to lock around multiple operations to ensure consistency. The lock is a recursive spin-lock (i.e shouldn't be held for extended periods).
     */
    static lock(): void;
    static unlock(): void;
    /**
     * Accessors for the "animationDuration" per-thread transaction property. Defines the default duration of animations added to layers. Defaults to 1/4s.
     */
    static animationDuration(): number;
    static setAnimationDuration$(dur: number): void;
    /**
     * Accessors for the "animationTimingFunction" per-thread transaction property. The default value is nil, when set to a non-nil value any animations added to layers will have this value set as their "timingFunction" property. Added in Mac OS X 10.6.
     */
    static animationTimingFunction(): _CAMediaTimingFunction | null;
    static setAnimationTimingFunction$(function_: _CAMediaTimingFunction | null): void;
    /**
     * Accessors for the "disableActions" per-thread transaction property. Defines whether or not the layer's -actionForKey: method is used to find an action (aka. implicit animation) for each layer property change. Defaults to NO, i.e. implicit animations enabled.
     */
    static disableActions(): boolean;
    static setDisableActions$(flag: boolean): void;
    /**
     * Accessors for the "completionBlock" per-thread transaction property. Once set to a non-nil value the block is guaranteed to be called (on the main thread) as soon as all animations subsequently added by this transaction group have completed (or been removed). If no animations are added before the current transaction group is committed (or the completion block is set to a different value), the block will be invoked immediately. Added in Mac OS X 10.6.
     */
    static completionBlock(): (() => void) | null;
    static setCompletionBlock$(block: (() => void) | null): void;
    /**
     * Associate arbitrary keyed-data with the current transaction (i.e. with the current thread). Nested transactions have nested data scope, i.e. reading a key searches for the innermost scope that has set it, setting a key always sets it in the innermost scope. Currently supported transaction properties include: "animationDuration", "animationTimingFunction", "completionBlock", "disableActions". See method declarations above for descriptions of each property. Attempting to set a property to a type other than its document type has an undefined result.
     */
    static valueForKey$(key: _NSString): NobjcObject | null;
    static setValue$forKey$(anObject: NobjcObject | null, key: _NSString): void;
}
