import type { NobjcObject } from "objc-js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSDictionary } from "../Foundation/NSDictionary.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSString } from "../Foundation/NSString.js";
export declare class _ODRecord extends _NSObject {
    static alloc(): _ODRecord;
    static new(): _ODRecord;
    init(): _ODRecord;
    /**
     * Similar to calling -[ODNode setCredentials:] except credentials are only set for this particular record's node Sets the credentials if necessary on the ODNode referenced by this ODRecord. Very similar to calling -[ODNode setCredentials:] except other records referencing the underlying node will not get authenticated, therefore inadvertant changes cannot occur. If all records referencing a particular node need to be updated, then use -[ODNode setCredentials:] on the original node instead. If the node is already authenticated with the same name and password, it will be a NOOP call. The original ODNode held by an ODRecord will be released when the credentials are changed for the connection associated with the record. outError is optional parameter, nil can be passed if error details are not needed.
     */
    setNodeCredentials$password$error$(inUsername: _NSString, inPassword: _NSString, outError: NobjcObject): boolean;
    /**
     * Similar to calling -[ODNode setCredentialsWithRecordType:] except credentials are only set for this particular record's node 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. Same behavior as ODRecordSetNodeCredentials. outError is optional parameter, nil can be passed if error details are not needed.
     */
    setNodeCredentialsWithRecordType$authenticationType$authenticationItems$continueItems$context$error$(inRecordType: _NSString, inType: _NSString, inItems: _NSArray, outItems: NobjcObject, outContext: NobjcObject, outError: NobjcObject): boolean;
    /**
     * Unsupported method. Unsupported method.
     * @deprecated
     */
    setNodeCredentialsUsingKerberosCache$error$(inCacheName: _NSString, outError: NobjcObject): boolean;
    /**
     * Returns a dictionary containing the password policy for the record if available. Returns a dictionary containing the password policy for the record if available. If no policy for record nil will be returned. outError is optional parameter, nil can be passed if error details are not needed.
     */
    passwordPolicyAndReturnError$(outError: NobjcObject): _NSDictionary;
    /**
     * Verifies the password provided is valid for the record Verifies the password provided is valid for the record. outError is optional parameter, nil can be passed if error details are not needed.
     */
    verifyPassword$error$(inPassword: _NSString, outError: NobjcObject): boolean;
    /**
     * Allows use of other OpenDirectory types of authentications Allows the caller to use other types of authentications that are available in OpenDirectory, that may require response-request loops, etc. A bool with the result of the operation. If it fails, outError can be checked for more specific error. Some ODNodes may not support the call so an error code of kODErrorCredentialsMethodNotSupported may be returned. outError is optional parameter, nil can be passed if error details are not needed.
     */
    verifyExtendedWithAuthenticationType$authenticationItems$continueItems$context$error$(inType: _NSString, inItems: _NSArray, outItems: NobjcObject, outContext: NobjcObject, outError: NobjcObject): boolean;
    /**
     * Changes the password for a record Changes the password for a record. The oldPassword can be nil if password is being set assuming the appropriate privileges are in place. outError is optional parameter, nil can be passed if error details are not needed.
     */
    changePassword$toPassword$error$(oldPassword: _NSString, newPassword: _NSString, outError: NobjcObject): boolean;
    /**
     * Synchronizes the record from the Directory in order to get current data and/or commit pending changes Synchronizes the record from the Directory in order to get current data. Any previously fetched attributes will be re-fetch from the Directory. This will not re-fetch the entire record, unless the entire record has been accessed. Additionally, any changes made to the record will be committed to the directory, if the node does not do immediate commits. outError is optional parameter, nil can be passed if error details are not needed.
     */
    synchronizeAndReturnError$(outError: NobjcObject): boolean;
    /**
     * Returns the attributes and values in the form of a key-value pair set. Returns the attributes and values in the form of a key-value pair set for this record. The key is a NSString of the attribute name (e.g., kODAttributeTypeRecordName, etc.) and the value is an NSArray of either NSData or NSString depending on the type of data. Binary data will be returned as NSData. If nil is passed, then all currently retrieved attributes will be returned. outError is optional parameter, nil can be passed if error details are not needed.
     */
    recordDetailsForAttributes$error$(inAttributes: _NSArray, outError: NobjcObject): _NSDictionary;
    /**
     * Returns an NSArray of NSString or NSData values of the attribute Returns an NSArray of NSString or NSData depending on the type of data. Binary data will be returned as NSData. outError is optional parameter, nil can be passed if error details are not needed.
     */
    valuesForAttribute$error$(inAttribute: _NSString, outError: NobjcObject): _NSArray;
    /**
     * Will take a mixture of NSData or NSString or an NSArray of either type when setting the values of an attribute Will take a mixture of NSData or NSString or an NSArray of either type when setting the values of an attribute. outError is optional parameter, nil can be passed if error details are not needed.
     */
    setValue$forAttribute$error$(inValueOrValues: NobjcObject, inAttribute: _NSString, outError: NobjcObject): boolean;
    /**
     * Removes all the values for an attribute. Removes all the values for an attribute. outError is optional parameter, nil can be passed if error details are not needed.
     */
    removeValuesForAttribute$error$(inAttribute: _NSString, outError: NobjcObject): boolean;
    /**
     * Will add a value to an attribute Will add a value to an attribute. Should be either NSData or NSString type. outError is optional parameter, nil can be passed if error details are not needed.
     */
    addValue$toAttribute$error$(inValue: NobjcObject, inAttribute: _NSString, outError: NobjcObject): boolean;
    /**
     * Will remove a value from an attribute Will remove a value from an attribute. Should be either NSData or NSString type. outError is optional parameter, nil can be passed if error details are not needed.
     */
    removeValue$fromAttribute$error$(inValue: NobjcObject, inAttribute: _NSString, outError: NobjcObject): boolean;
    /**
     * Deletes the record from the node and invalidates the record. Deletes the record from the node and invalidates the record. The ODRecord should be released after deletion. outError is optional parameter, nil can be passed if error details are not needed.
     */
    deleteRecordAndReturnError$(outError: NobjcObject): boolean;
    /**
     * This will copy any policies configured for the record. This will copy any policies configured for the record.
     */
    policiesAndReturnError$(error: NobjcObject): _NSDictionary;
    /**
     * This will copy any policies configured for the record. This will copy any policies configured for the record.
     */
    effectivePoliciesAndReturnError$(error: NobjcObject): _NSDictionary;
    /**
     * This will return a dictionary of supported policies. 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;
    /**
     * This will set the policy for the record. This will set the policy for the record. Policies are evaluated in combination with node-level policies.
     */
    setPolicies$error$(policies: _NSDictionary, error: NobjcObject): boolean;
    /**
     * This will set a specific policy setting for the record. This will set a specific policy setting for the record.
     */
    setPolicy$value$error$(policy: _NSString, value: NobjcObject, error: NobjcObject): boolean;
    /**
     * This will remove a specific policy setting from the record. This will remove a specific policy setting from the record.
     */
    removePolicy$error$(policy: _NSString, error: NobjcObject): boolean;
    /**
     * This will add a specific policy to the specific category for the record. This will add a specific policy to the specific category for the record. The specified policy will be applied, in combination with any node policies, to the specified record when policies are evaluated. 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. a valid ODPolicyCategoryType to which the policy will be added. an optional NSError reference for error details. a BOOL which signifies if the policy addition succeeded, otherwise error is set.
     */
    addAccountPolicy$toCategory$error$(policy: _NSDictionary, category: _NSString, error: NobjcObject): boolean;
    /**
     * This will remove a specific policy from the specific category for the record. This will remove a specific policy from the specific category for the record. a dictionary containing the specific policy to be removed, with the same format as described in addAccountPolicy. a valid ODPolicyCategoryType from which the policy will be removed. an optional NSError reference for error details. a BOOL which signifies if the policy removal succeeded, otherwise error is set.
     */
    removeAccountPolicy$fromCategory$error$(policy: _NSDictionary, category: _NSString, error: NobjcObject): boolean;
    /**
     * This will set the policies for the record. This will set the policies for the record, replacing any existing policies. All of the policies in the set will be applied to the record when policies are evaluated. 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. an optional NSError reference for error details. a BOOL which signifies if the policy set succeeded, otherwise error is set.
     */
    setAccountPolicies$error$(policies: _NSDictionary, error: NobjcObject): boolean;
    /**
     * Returns a dictionary containing any policies configured for the record. Returns a dictionary containing any policies configured for the record. Does not include any policies set for the node. Returns a dictionary containing any policies configured for the record. an optional NSError reference for error details. a NSDictionary containing all currently set policies. The format of the dictionary is the same as described in setAccountPolicies.
     */
    accountPoliciesAndReturnError$(error: NobjcObject): _NSDictionary;
    /**
     * Determines if policies allow the account to authenticate. Determines if policies allow the account to authenticate. Authentication and password change policies are evaluated. Record-level and node-level policies are evaluated in combination, with record-level taking precedence over node-level policies. The failure of any single policy will deny the authentication. This check is only definitive at the time it was requested. The policy or the environment could change before the authentication is actually requested. Errors from the authentication request should be consulted. It is not necessary to call this function when calling verifyPassword or verifyPasswordExtended since those methods perform the same policy evaluation. an optional NSError reference for error details. a bool which signifies if the authentication is allowed, otherwise error is set.
     */
    authenticationAllowedAndReturnError$(error: NobjcObject): boolean;
    /**
     * Determines if policies allow the password change. Determines if policies allow the password change. Password content policies are evaluated. Record-level and node-level policies are evaluated in combination, with record-level taking precedence over node-level policies. The failure of any single policy will deny the password change. 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. contains the password to be evaluated. an optional NSError reference for error details. a BOOL which signifies if the password change is allowed, otherwise error is set.
     */
    passwordChangeAllowed$error$(newPassword: _NSString, error: NobjcObject): boolean;
    /**
     * Determines if the password will expire within the specified time. Determines if the password will expire (i.e. need to be changed) between now and the specified number of seconds in the future. Password change policies are evaluated. Record-level and node-level policies are evaluated in combination, with record-level taking precedence over node-level policies. the number of seconds from the current time to be used as the upper-bound for the password expiration period. a BOOL which signifies if the password will expire within the specified time.
     */
    willPasswordExpire$(willExpireIn: number): boolean;
    /**
     * Determines if authentications will expire within the specified time. Determines if authentications will expire (i.e. session and/or account expires) between now and the specified number of seconds in the future. Authentication policies are evaluated. Record-level and node-level policies are evaluated in combination, with record-level taking precedence over node-level policies. the number of seconds from the current time to be used as the upper-bound for the authentication expiration period. a BOOL which signifies if authentications will expire within the specified time.
     */
    willAuthenticationsExpire$(willExpireIn: number): boolean;
    /**
     * Will add the record as a member of the group record Will add the record as a member of the group record. An error will be returned if the record is not a group record. Additionally, if the member record is not an appropriate type allowed as part of a group an error will be returned. outError is optional parameter, nil can be passed if error details are not needed.
     */
    addMemberRecord$error$(inRecord: _ODRecord, outError: NobjcObject): boolean;
    /**
     * Will remove the record as a member from the group record Will remove the record as a member from the group record. An error will be returned if the record is not a group record. Additionally, if the member record is not an appropriate type allowed as part of a group an error will be returned. outError is optional parameter, nil can be passed if error details are not needed.
     */
    removeMemberRecord$error$(inRecord: _ODRecord, outError: NobjcObject): boolean;
    /**
     * Will use membership APIs to determine if inRecord is a member of the group Will use membership APIs to determine if inRecord is a member of the group. If the receiving object is not a group then NO will still be returned. outError is optional parameter, nil can be passed if error details are not needed.
     */
    isMemberRecord$error$(inRecord: _ODRecord, outError: NobjcObject): boolean;
    /** Type of the record. The record type. */
    recordType(): _NSString;
    /** Name of the record. This is the official record name. */
    recordName(): _NSString;
    /**
     * Determines how many seconds until the password expires. Determines how many seconds until the password expires (i.e. needs changing). Password change policies are evaluated. Record-level and node-level policies are evaluated in combination, with record-level taking precedence over node-level policies. the number of seconds until the password expires. If multiple policies will cause the password to expire, the soonest expiration time is returned. If already expired, kODExpirationTimeExpired is returned. If there are no password change policies, kODExpirationTimeNeverExpires is returned.
     */
    secondsUntilPasswordExpires(): number;
    /**
     * Determines how many seconds until authentications expire. Determines how many seconds until authentications expire (i.e. session and/or account expires). Authentication policies are evaluated. Record-level and node-level policies are evaluated in combination, with record-level taking precedence over node-level policies. the number of seconds until authentications expire. If multiple policies will cause authentications to expire, the soonest expiration time is returned. If already expired, kODExpirationTimeExpired is returned. If there are no authentication policies controlling expiration, kODExpirationTimeNeverExpires is returned.
     */
    secondsUntilAuthenticationsExpire(): number;
}
