import type { PermissionScope, RecordsPermissionScope } from '../types/permission-types.js';
import type { ProtocolDefinition } from '../types/protocols-types.js';
import { KeyDerivationScheme } from './hd-key.js';
import { DwnInterfaceName, DwnMethodName } from '../enums/dwn-interface-method.js';
type GrantKeyRecordsScopeBase = RecordsPermissionScope & {
    interface: typeof DwnInterfaceName.Records;
    protocol: string;
};
export type GrantKeyRecordsScope = GrantKeyRecordsScopeBase & {
    method: typeof DwnMethodName.Read | typeof DwnMethodName.Write;
};
export type GrantKeyReadRecordsScope = GrantKeyRecordsScopeBase & {
    contextId?: undefined;
    method: typeof DwnMethodName.Read;
};
export type GrantKeyWriteRecordsScope = GrantKeyRecordsScopeBase & {
    contextId?: undefined;
    method: typeof DwnMethodName.Write;
};
export type GrantKeyEligibleRecordsScope = GrantKeyReadRecordsScope | GrantKeyWriteRecordsScope;
export type GrantKeyProtocolPathScope = {
    scheme: typeof KeyDerivationScheme.ProtocolPath;
    protocol: string;
    protocolPath?: string;
};
export declare function isGrantKeyRecordsScope(scope: PermissionScope): scope is GrantKeyRecordsScope;
export declare function isGrantKeyEligibleRecordsScope(scope: PermissionScope): scope is GrantKeyEligibleRecordsScope;
export declare function getGrantKeyDeliveryScopes(grantScope: GrantKeyReadRecordsScope, protocolDefinition?: ProtocolDefinition): GrantKeyProtocolPathScope[];
export declare function getGrantKeyDeliveryScopes(grantScope: GrantKeyWriteRecordsScope, protocolDefinition: ProtocolDefinition): GrantKeyProtocolPathScope[];
export declare function grantKeyScopeCoversDeliveredScope(input: {
    grantScope: GrantKeyEligibleRecordsScope;
    deliveredScope: Pick<GrantKeyProtocolPathScope, 'protocol' | 'protocolPath'>;
    protocolDefinition?: ProtocolDefinition;
}): boolean;
export {};
//# sourceMappingURL=grant-key-coverage.d.ts.map