import type { NobjcObject } from "objc-js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSData } from "../Foundation/NSData.js";
import type { _NSDictionary } from "../Foundation/NSDictionary.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _ODConfiguration } from "./ODConfiguration.js";
import type { _ODRecord } from "./ODRecord.js";
import type { _ODSession } from "./ODSession.js";
export declare class _ODNode extends _NSObject {
    static alloc(): _ODNode;
    static new(): _ODNode;
    init(): _ODNode;
    /**
     * @method nodeWithSession:type:error: @abstract Create an autoreleased ODNode of the given type, optionally in a specific session. @discussion Autoreleased instance of an ODNode with a provided ODSession and ODNodeType. outError is optional parameter, nil can be passed if error details are not needed.
     */
    static nodeWithSession$type$error$(inSession: _ODSession, inType: number, outError: NobjcObject): _ODNode;
    /**
     * @method nodeWithSession:name:error: @abstract Create an autoreleased ODNode with the given name, optionally in a specific session. @discussion autoreleased instance of an ODNode with a provided ODSession and node name. outError is optional parameter, nil can be passed if error details are not needed.
     */
    static nodeWithSession$name$error$(inSession: _ODSession, inName: _NSString, outError: NobjcObject): _ODNode;
    /**
     * @method initWithSession:type:error: @abstract Initialize an ODNode instance of the given type, optionally in a specific session. @discussion initialize instance of an ODNode with a provided ODSession and ODNodeType. outError is optional parameter, nil can be passed if error details are not needed.
     */
    initWithSession$type$error$(inSession: _ODSession, inType: number, outError: NobjcObject): _ODNode;
    /**
     * @method initWithSession:name:error: @abstract Initialize an ODNode instance with the given name, optionally in a specific session. @discussion initialize instance of an ODNode with a provided ODSession and node name. outError is optional parameter, nil can be passed if error details are not needed.
     */
    initWithSession$name$error$(inSession: _ODSession, inName: _NSString, outError: NobjcObject): _ODNode;
    /**
     * @method subnodeNamesAndReturnError: @abstract Returns NSArray of node names for this node, which may contain sub-nodes or search policy nodes @discussion Returns NSArray of node names for this node, which may contain sub-nodes or search policy nodes. Commonly used with Search policy nodes. outError is optional parameter, nil can be passed if error details are not needed.
     */
    subnodeNamesAndReturnError$(outError: NobjcObject): _NSArray;
    /**
     * @method unreachableSubnodeNamesAndReturnError: @abstract Will return NSArray of names of subnodes that are not currently reachable. @discussion Will return NSArray of names of subnodes that are not currently reachable. Commonly used with Search policy nodes to determine if any nodes are currently unreachable, but may also return other subnodes if the OpenDirectory plugin supports. outError is optional parameter, nil can be passed if error details are not needed.
     */
    unreachableSubnodeNamesAndReturnError$(outError: NobjcObject): _NSArray;
    /**
     * @method nodeDetails:error: @abstract Returns a dictionary of information about the instance of ODNode @discussion Returns a dictionary of information about the instance of ODNode. Details such as Trust information (kODAttributeTypeTrustInformation) or other Node details can be retrieved. outError is optional parameter, nil can be passed if error details are not needed.
     */
    nodeDetailsForKeys$error$(inKeys: _NSArray, outError: NobjcObject): _NSDictionary;
    /**
     * @method supportedRecordTypesAndReturnError: @abstract Returns a NSArray of the record types supported by this node. @discussion Returns a NSArray of the record types supported by this node. If node does not support the check then all possible types will be returned. outError is optional parameter, nil can be passed if error details are not needed.
     */
    supportedRecordTypesAndReturnError$(outError: NobjcObject): _NSArray;
    /**
     * @method supportedAttributesForRecordType:error: @abstract Will return a list of attribute types supported for that attribute if possible @discussion Will return a list of attribute types supported for that attribute if possible. If no specific types are available, then all possible values will be returned instead. outError is optional parameter, nil can be passed if error details are not needed.
     */
    supportedAttributesForRecordType$error$(inRecordType: _NSString, outError: NobjcObject): _NSArray;
    /**
     * @method setCredentialsWithRecordType:recordName:password:error: @abstract Sets the credentials for interaction with the ODNode @discussion Sets the credentials for interaction with the ODNode. Record references, etc. will use these credentials to query or change data. Setting the credentials on a node referenced by other OD object types will change the credentials for all for all references. outError is optional parameter, nil can be passed if error details are not needed.
     */
    setCredentialsWithRecordType$recordName$password$error$(inRecordType: _NSString, inRecordName: _NSString, inPassword: _NSString, outError: NobjcObject): boolean;
    /**
     * @method setCredentialsWithRecordType:authType:authItems:outAuthItems:context:error: @abstract Allows use of other OpenDirectory types of authentications to set the credentials for an ODNode @discussion Allows the caller to use other types of authentications that are available in OpenDirectory, that may require response-request loops, etc. Not all OD plugins will support this call, look for kODErrorCredentialsMethodNotSupported in outError. outError is optional parameter, nil can be passed if error details is not needed.
     */
    setCredentialsWithRecordType$authenticationType$authenticationItems$continueItems$context$error$(inRecordType: _NSString, inType: _NSString, inItems: _NSArray, outItems: NobjcObject, outContext: NobjcObject, outError: NobjcObject): boolean;
    /**
     * @method setCredentialsUsingKerberosCache:error: @abstract Unsupported method. @discussion Unsupported method.
     * @deprecated
     */
    setCredentialsUsingKerberosCache$error$(inCacheName: _NSString, outError: NobjcObject): boolean;
    /**
     * @method createRecordWithRecordType:name:attributes:error: @abstract Creates a record in this node, using the given name and attributes. @discussion Takes all the provided attributes and type to create an entire record. The function will assign a UUID to the record automatically. This UUID can be overwritten by the client by passing with the other attributes. inAttributes is optional, nil can be passed if no other attributes are to be set.
     */
    createRecordWithRecordType$name$attributes$error$(inRecordType: _NSString, inRecordName: _NSString, inAttributes: _NSDictionary, outError: NobjcObject): _ODRecord;
    /**
     * @method recordWithRecordType:name:attributes:error: @abstract Returns an ODRecord object that references the requested type and name @discussion Returns an ODRecord object that references the requested type and name. The record will have cached the attributes requested. Further attributes can be requested via ODRecord APIs. For performance it is best to ask for as many attributes that are needed as possible up front.
     */
    recordWithRecordType$name$attributes$error$(inRecordType: _NSString, inRecordName: _NSString, inAttributes: NobjcObject, outError: NobjcObject): _ODRecord;
    /**
     * @method customCall:sendData:error: @abstract Sends a custom code to the node; input and output data formats are specific to the call. @discussion Sends a custom code to the node; input and output data formats are specific to the call. outError is optional parameter, nil can be passed if error details are not needed.
     */
    customCall$sendData$error$(inCustomCode: number, inSendData: _NSData, outError: NobjcObject): _NSData;
    /**
     * @method customFunction:payload:error: @abstract Sends a custom function call to the node; data is a type specific to the call. @discussion Sends a custom function call to the node; data is a type specific to the call. 'error' is an optional parameter therefore nil can be passed if error details are not needed. Return type is defined by the custom function requested.
     */
    customFunction$payload$error$(function_: _NSString, payload: NobjcObject, error: NobjcObject): NobjcObject;
    /**
     * @method policiesAndReturnError: @abstract This will copy any policies configured for the node. @discussion This will copy any policies configured for the node.
     */
    policiesAndReturnError$(error: NobjcObject): _NSDictionary;
    /**
     * @function supportedPoliciesAndReturnError: @abstract This will return a dictionary of supported policies. @discussion This will return a dictionary of supported policies, if appropriate, the value will be the maximum value allowed for the policy in question. For example, if password history is available, it will state how much history is supported.
     */
    supportedPoliciesAndReturnError$(error: NobjcObject): _NSDictionary;
    /**
     * @function setPolicies:error: @abstract This will set the policy for the node. @discussion This will set the policy for the node. Policies are evaluated in combination with record-level policies.
     */
    setPolicies$error$(policies: _NSDictionary, error: NobjcObject): boolean;
    /**
     * @function setPolicy:value:error: @abstract This will set a specific policy setting for the node. @discussion This will set a specific policy setting for the node.
     */
    setPolicy$value$error$(policy: _NSString, value: NobjcObject, error: NobjcObject): boolean;
    /**
     * @function removePolicy:value:error: @abstract This will remove a specific policy setting from the node. @discussion This will remove a specific policy setting from the node.
     */
    removePolicy$error$(policy: _NSString, error: NobjcObject): boolean;
    /**
     * @method addAccountPolicy:toCategory:error: @abstract This will add an account policy to the node for the specified category. @discussion This will add an account policy to the node for the specified category. The specified policy will be applied to all users in the specified node when policies are evaluated. @param policy a dictionary containing the specific policy to be added. The dictionary may contain the following keys: kODPolicyKeyIdentifier a required key identifying the policy. kODPolicyKeyParameters an optional key containing a dictionary of parameters that can be used for informational purposes or in the policy format string. kODPolicyKeyContent a required key specifying the policy, from which a predicate will be created for evaluating the policy. @param category a valid ODPolicyCategoryType to which the specified policy will be added. @param error an optional NSError reference for error details. @result a BOOL which signifies if the policy addition succeeded, otherwise error is set.
     */
    addAccountPolicy$toCategory$error$(policy: _NSDictionary, category: _NSString, error: NobjcObject): boolean;
    /**
     * @method removeAccountPolicy:fromCategory:error: @abstract This will remove an account policy from the node for the specified category. @discussion This will remove an account policy from the node for the specified category. @param policy a dictionary containing the specific policy to be removed, with the same format as described in addAccountPolicy. @param category a valid ODPolicyCategoryType from which the specified policy will be removed. @param error an optional NSError reference for error details. @result a BOOL which signifies if the policy removal succeeded, otherwise error is set.
     */
    removeAccountPolicy$fromCategory$error$(policy: _NSDictionary, category: _NSString, error: NobjcObject): boolean;
    /**
     * @method setAccountPolicies:error: @abstract This will set the policies for the node. @discussion This will set the policies for the node, replacing any existing policies. All of the policies in the set will be applied to all users in the specified node when policies are evaluated. @param policies a dictionary containing all of the policies to be set for the node. The dictionary may contain the following keys: kODPolicyCategoryAuthentication an optional key with a value of an array of policy dictionaries that specify when authentications should be allowed. kODPolicyCategoryPasswordContent an optional key with a value of an array of policy dictionaries the specify the required content of passwords. kODPolicyCategoryPasswordChange an optional key with a value of an array of policy dictionaries that specify when passwords are required to be changed. @param error an optional NSError reference for error details. @result a BOOL which signifies if the policy set succeeded, otherwise error is set.
     */
    setAccountPolicies$error$(policies: _NSDictionary, error: NobjcObject): boolean;
    /**
     * @method accountPoliciesAndReturnError: @abstract Returns a dictionary containing any policies configured for the node. @discussion Returns a dictionary containing any policies configured for the node. @param error an optional NSError reference for error details. @result an NSDictionary containing all currently set policies. The format of the dictionary is the same as described in setAccountPolicies.
     */
    accountPoliciesAndReturnError$(error: NobjcObject): _NSDictionary;
    /**
     * @method passwordContentCheck:forRecordName:error: @abstract Validates a password against the node's password content policies. @discussion Validates a password against the node's password content policies. The node's password content policies will be evaluated to determine if the password is acceptable. May be used prior to creating the record. This check is only definitive at the time it was requested. The policy or the environment could change before the password change is actually requested. Errors from the password change request should be consulted. @param password the password to be evaluated against the content policies. @param recordName the name of the record. @param error an optional NSError reference for error details. @result a bool which signifies if the password passes all content policies, otherwise error is set.
     */
    passwordContentCheck$forRecordName$error$(password: _NSString, recordName: _NSString, error: NobjcObject): boolean;
    /**
     * @property nodeName @abstract The node name. @discussion The node name, corresponding to its path in OpenDirectory.
     */
    nodeName(): _NSString;
    /**
     * @method configuration @abstract Returns an ODConfiguration object for the node. @discussion Returns an ODConfiguration object for the node.
     */
    configuration(): _ODConfiguration;
}
