import type { ResourceIdentifier } from '../http/representation/ResourceIdentifier';
import type { PodStore } from '../identity/interaction/pod/util/PodStore';
import type { StorageLocationStrategy } from '../server/description/StorageLocationStrategy';
import type { PermissionReaderInput } from './PermissionReader';
import { PermissionReader } from './PermissionReader';
import type { MultiPermissionMap } from './permissions/Permissions';
/**
 * Allows control access if the request is being made by an owner of the pod containing the resource.
 * This overrules any deductions made by the source reader:
 * if the target resource is owned by the client, they will always have control access.
 */
export declare class OwnerPermissionReader extends PermissionReader {
    protected readonly logger: import("global-logger-factory").Logger<unknown>;
    protected readonly podStore: PodStore;
    protected readonly storageStrategy: StorageLocationStrategy;
    protected readonly reader: PermissionReader;
    constructor(podStore: PodStore, storageStrategy: StorageLocationStrategy, reader: PermissionReader);
    canHandle(input: PermissionReaderInput): Promise<void>;
    handle(input: PermissionReaderInput): Promise<MultiPermissionMap>;
    protected findOwnedResources(identifiers: ResourceIdentifier[], webId?: string): Promise<ResourceIdentifier[]>;
    /**
     * Finds all pods that contain the given identifiers.
     * Return value is a record where the keys are the identifiers and the values the associated pod.
     */
    protected findPods(identifiers: ResourceIdentifier[]): Promise<Record<string, string>>;
    /**
     * Finds the owners of the given pods.
     * Return value is a record where the keys are the pods and the values are all the WebIDs that own this pod.
     */
    protected findOwners(pods: string[]): Promise<Record<string, string[]>>;
}
