import { Policy } from './policy.js';
export type KeyAccessType = 'remote' | 'wrapped';
export declare function isRemote(keyAccessJSON: KeyAccess | KeyAccessObject): boolean;
export declare class Wrapped {
    readonly url: string;
    readonly publicKey: string;
    readonly metadata: unknown;
    readonly type = "wrapped";
    keyAccessObject?: KeyAccessObject;
    constructor(url: string, publicKey: string, metadata: unknown);
    write(policy: Policy, keyBuffer: Uint8Array, encryptedMetadataStr: string): Promise<KeyAccessObject>;
}
export declare class Remote {
    readonly url: string;
    readonly publicKey: string;
    readonly metadata: unknown;
    readonly type = "remote";
    keyAccessObject?: KeyAccessObject;
    wrappedKey?: string;
    policyBinding?: string;
    constructor(url: string, publicKey: string, metadata: unknown);
    write(policy: Policy, keyBuffer: Uint8Array, encryptedMetadataStr: string): Promise<KeyAccessObject>;
}
export type KeyAccess = Remote | Wrapped;
export type KeyAccessObject = {
    type: KeyAccessType;
    url: string;
    protocol: 'kas';
    wrappedKey?: string;
    policyBinding?: string;
    encryptedMetadata?: string;
};
//# sourceMappingURL=key-access.d.ts.map