import type { ResourceSet } from '../storage/ResourceSet';
import type { IdentifierStrategy } from '../util/identifiers/IdentifierStrategy';
import type { PermissionReaderInput } from './PermissionReader';
import { PermissionReader } from './PermissionReader';
import type { MultiPermissionMap } from './permissions/Permissions';
/**
 * When trying to delete a non-existent resource, the server needs to return a different result
 * based on the read permissions on the resource or its parent container.
 * This {@link PermissionReader} makes sure read permissions on a resource and its parent container
 * are checked in such cases.
 */
export declare class ReadDeleteReader extends PermissionReader {
    protected readonly reader: PermissionReader;
    protected readonly resourceSet: ResourceSet;
    protected readonly identifierStrategy: IdentifierStrategy;
    constructor(reader: PermissionReader, resourceSet: ResourceSet, identifierStrategy: IdentifierStrategy);
    canHandle(input: PermissionReaderInput): Promise<void>;
    handle(input: PermissionReaderInput): Promise<MultiPermissionMap>;
}
