import type { NobjcObject } from "objc-js";
import type { _EKEventStore } from "./EKEventStore.js";
import type { _EKObject } from "./EKObject.js";
import type { _EKSource } from "./EKSource.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _NSColor } from "../AppKit/NSColor.js";
import type { EKCalendarEventAvailabilityMask } from "./EKCalendarEventAvailabilityMask.js";
import type { EKCalendarType } from "./EKCalendarType.js";
import type { EKEntityMask } from "./EKEntityMask.js";
import type { EKEntityType } from "./EKEntityType.js";
export declare class _EKCalendar extends _EKObject {
    static alloc(): _EKCalendar;
    static new(): _EKCalendar;
    init(): _EKCalendar;
    /**
     * Create a new calendar in the specified event store. You should use calendarForEntityType in iOS 6 or later.
     * @deprecated
     */
    static calendarWithEventStore$(eventStore: _EKEventStore): _EKCalendar;
    /**
     * Creates a new autoreleased calendar that may contain the given entity type. You can only create calendars that accept either reminders or events via our API. However, other servers might allow mixing the two (though it is not common). The entity type that this calendar may support. The event store in which to create this calendar.
     */
    static calendarForEntityType$eventStore$(entityType: EKEntityType, eventStore: _EKEventStore): _EKCalendar;
    /**
     * The source representing the 'account' this calendar belongs to. This is only settable when initially creating a calendar and then effectively read-only after that. That is, you can create a calendar, but you cannot move it to another source. This will be nil for new calendars until you set it.
     */
    source(): _EKSource;
    setSource$(value: _EKSource): void;
    /**
     * A unique identifier for the calendar. It is not sync-proof in that a full sync will lose this identifier, so you should always have a back up plan for dealing with a calendar that is no longer fetchable by this property, e.g. by title, type, color, etc. Use [EKEventStore calendarWithIdentifier:] to look up the calendar by this value.
     */
    calendarIdentifier(): _NSString;
    /** The title of the calendar. */
    title(): _NSString;
    setTitle$(value: _NSString): void;
    /**
     * The type of the calendar as a EKCalendarType. This is actually based on what source the calendar is in, as well as whether it is a subscribed calendar. CalDAV subscribed calendars have type EKCalendarTypeCalDAV with isSubscribed = YES.
     */
    type(): EKCalendarType;
    /** Represents whether you can this add, remove, or modify items in this calendar. */
    allowsContentModifications(): boolean;
    /** YES if this calendar is a subscribed calendar. */
    subscribed(): boolean;
    /**
     * If this is set to YES, it means you cannot modify any attributes of the calendar or delete it. It does NOT imply that you cannot add events or reminders to the calendar.
     */
    immutable(): boolean;
    /**
     * Returns the calendar color as a CGColorRef. This will be nil for new calendars until you set it.
     */
    CGColor(): NobjcObject;
    setCGColor$(value: Uint8Array): void;
    /**
     * Returns the calendar color as a NSColor. This will be nil for new calendars until you set it.
     */
    color(): _NSColor;
    setColor$(value: _NSColor): void;
    /**
     * Returns a bitfield of supported event availabilities, or EKCalendarEventAvailabilityNone if this calendar does not support setting availability on an event.
     */
    supportedEventAvailabilities(): EKCalendarEventAvailabilityMask;
    /**
     * Returns the entity types this calendar can contain. While our API only allows creation of single-entity calendars, other servers might allow mixed-entity calendars.
     */
    allowedEntityTypes(): EKEntityMask;
}
