import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSSecureCoding } from "../Foundation/NSSecureCoding.js";
import type { _CKRecord } from "./CKRecord.js";
import type { _CKRecordID } from "./CKRecordID.js";
import type { _CKRecordValue } from "./CKRecordValue.js";
import type { CKReferenceAction } from "./CKReferenceAction.js";
export declare class _CKReference extends _NSObject {
    static alloc(): _CKReference;
    static new(): _CKReference;
    init(): _CKReference;
    /**
     * @discussion It is acceptable to relate two records that have not yet been uploaded to the server. Those records must be uploaded to the server in the same operation if using an action other than `CKReferenceActionNone`. If a record references a record that does not exist on the server and is not in the current save operation it will result in an error if using an action other than `CKReferenceActionNone`.
     */
    initWithRecordID$action$(recordID: _CKRecordID, action: CKReferenceAction): _CKReference;
    initWithRecord$action$(record: _CKRecord, action: CKReferenceAction): _CKReference;
    referenceAction(): CKReferenceAction;
    recordID(): _CKRecordID;
}
export interface _CKReference extends _NSSecureCoding, _NSCopying, _CKRecordValue {
}
