import type { NobjcObject } from "objc-js";
import type { _CLSActivity } from "./CLSActivity.js";
import type { _CLSObject } from "./CLSObject.js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSError } from "../Foundation/NSError.js";
import type { _NSSet } from "../Foundation/NSSet.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _NSURL } from "../Foundation/NSURL.js";
import type { NSRange } from "../structs/NSRange.js";
import type { CLSContextTopic } from "./CLSContextTopic.js";
import type { CLSContextType } from "./CLSContextType.js";
export declare class _CLSContext extends _CLSObject {
    static alloc(): _CLSContext;
    static new(): _CLSContext;
    init(): _CLSContext;
    /**
     * Initialize and configure the type of content this context represents. App-assigned identifier for this context. 256 characters max length. The type of content this context represents. Title for what this context represents. 256 characters max length.
     */
    initWithType$identifier$title$(type: CLSContextType, identifier: _NSString, title: _NSString): _CLSContext;
    /**
     * Marks contexts as active. If a context is already active, it will remain active. If another context is active, the other will resign active before this one becomes active.
     */
    becomeActive(): void;
    /**
     * Resign being active. This method does nothing if the reciever of the message is not active.
     */
    resignActive(): void;
    /** Sets the type. Use this to update a previously saved context. */
    setType$(type: CLSContextType): void;
    /**
     * Add or replace additional progress reporting capabilities of the app for this context. If this parameter contains multiple items with the same value for kind, then one of them will be arbitrarily selected and used. If this parameter contains a capability of kind CLSProgressReportingCapabilityKindDuration, it will be ignored. Progress reporting capabilities to add or replace existing capabilties.
     */
    addProgressReportingCapabilities$(capabilities: _NSSet): void;
    /**
     * Clears CLSProgressReportingCapability objects added to the receiver. Removes all capabilities added via '-addProgressReportingCapabilities:'. The context will have the default progress reporting capability of kind CLSProgressReportingCapabilityKindDuration.
     */
    resetProgressReportingCapabilities(): void;
    /**
     * Removes this child context from its parent. If you remove a context from its parent and do not add it as a child of another context, it will be deleted when you call -save on the dataStore.
     */
    removeFromParent(): void;
    /**
     * Adds a child context. A context can only have a single parent. objectID of child context may change after it's been added.
     */
    addChildContext$(child: _CLSContext): void;
    /**
     * Returns a descendant of this context matching the context path you provide. Context path must start with an identifier of a child context of the context to which this message is sent. If there are any missing contexts, they will be filled in by calling the following method on the context's data store's delegate: If the dataStore does not have a delegate and there are missing contexts then an incomplete list of contexts will be passed to the completion handler. Completion block is called on a background thread.
     */
    descendantMatchingIdentifierPath$completion$(identifierPath: _NSArray, completion: ((context: _CLSContext, error: _NSError) => void) | null): void;
    /**
     * Adds a child context to specify the user can navigate to the child from this context. Used only for presentation purpose. Unlike , this method does not affect the identifierPath.
     */
    addNavigationChildContext$(child: _CLSContext): void;
    /**
     * Removes the navigation path to the child context from this context. Used only for presentation purpose. Unlike , this method does not affect the identiferPath.
     */
    removeNavigationChildContext$(child: _CLSContext): void;
    /**
     * @abstract Creates a new activity @discussion Creates a new activity and sets it as the current activity.
     */
    createNewActivity(): _CLSActivity;
    /**
     * Context identifier path of this context. The identifier path starts with the main app context object and finishes with the identifier of this context. This is the identifier path that one would use in to find `this' context.
     */
    identifierPath(): _NSArray;
    /**
     * App-assigned identifier. This identifier should work across users and devices and be unique with regards to its siblings within its parent. The identifier could be used to embed information later used for deep linking. For example: or
     */
    identifier(): _NSString;
    /**
     * Alternative deep link URL using universal links. If your app supports universal links, you can supply them here to link the content this context represents.
     */
    universalLinkURL(): _NSURL | null;
    setUniversalLinkURL$(value: _NSURL | null): void;
    /** Type of this context The type that best describes this context. */
    type(): CLSContextType;
    /**
     * An optional user-visible name for the context if its type is CLSContextTypeCustom. This property is relevant only if the type is CLSContextTypeCustom. This string should be localized. If this property is not set for a context of type CLSContextTypeCustom, Schoolwork app will use a default localized string ‘Custom’ as the name of the activity representing this context.
     */
    customTypeName(): _NSString | null;
    setCustomTypeName$(value: _NSString | null): void;
    /** Title of this context. For example: 1 */
    title(): _NSString;
    setTitle$(value: _NSString): void;
    /**
     * The displayOrder is by default sorted ascending. Set the displayOrder if you want your contexts to be displayed in a particular order. The sort key is used as a way to sort sibling contexts in a particular order.
     */
    displayOrder(): number;
    setDisplayOrder$(value: number): void;
    /** Topic associated with this context. See above for valid, predefined topics. */
    topic(): CLSContextTopic | null;
    setTopic$(value: CLSContextTopic | null): void;
    /**
     * This property is true if the context can be assigned as an activity. The default value of this property is true. This should be set to false for a context that is used as a container for other contexts, but by itself, is not an assignable activity.
     */
    assignable(): boolean;
    setAssignable$(value: boolean): void;
    /**
     * Suggested age range of students, expressed in years, for whom this context is suitable. This information is intended to help teachers to choose age-appropriate activities for their students. The default value is [0, NSIntegerMax - 1]. This is in or in Set the lower bound to 0 to specify no minimum age limit and set the upper bound to NSIntegerMax - 1 to specify no maximum age limit.
     */
    suggestedAge(): NSRange;
    setSuggestedAge$(value: NSRange): void;
    /**
     * Suggested time range, expressed in minutes, to complete the activity. This information will help teachers as they choose activities for their students. The default value is [0, NSIntegerMax - 1]. This is in or in Set the lower bound value to 0 to specify no minimum time limit and set the upper bound to NSIntegerMax - 1 to specify no maximum time limit.
     */
    suggestedCompletionTime(): NSRange;
    setSuggestedCompletionTime$(value: NSRange): void;
    /**
     * Specifies progress reporting capablities of the app for this context. This information is intended to help teachers as they choose activities for their students. By default a CLSContext will have one CLSProgressReportingCapability instance of kind CLSProgressReportingCapabilityKindDuration. More progress reporting capabilities can be specified via '-addProgressReportingCapabilities:' to customize this set.
     */
    progressReportingCapabilities(): _NSSet;
    /**
     * An optional user-visible summary describing the context limited to 4000 characters in length. This may be used to provide information about the types of activities available under a given context or the context itself. This string should be localized.
     */
    summary(): _NSString | null;
    setSummary$(value: _NSString | null): void;
    /**
     * An optional thumbnail image associated with the context. The size of this image should be equal to or larger than 80x80 pixels and equal to or smaller than 330x330 pixels. Images larger than 330x330 pixels will be scaled down. Images with both dimensions smaller than 80x80 pixels will not be accepted.
     */
    thumbnail(): NobjcObject;
    setThumbnail$(value: Uint8Array | null): void;
    /** Returns true if self is the active context. */
    active(): boolean;
    /** Returns the parent of this context. */
    parent(): _CLSContext | null;
    /**
     * Child contexts that can be navigated to from this context. Returns all the child contexts added via
     */
    navigationChildContexts(): _NSArray;
    /**
     * @abstract Returns the current activity. @discussion Activity associated with a context. If no activity was ever created this is nil. See: @c -[CLSContext createNewActivity]; for more details.
     */
    currentActivity(): _CLSActivity | null;
}
