import type { BaseMessage } from './message-types.js';
import type { DwnInterfaceName, DwnMethodName } from '../index.js';
export declare type PermissionScope = {
    method: string;
    schema?: string;
    objectId?: string;
};
export declare type PermissionConditions = {
    attestation?: 'optional' | 'prohibited' | 'required';
    delegation?: boolean;
    encryption?: 'optional' | 'required';
    publication?: boolean;
    sharedAccess?: boolean;
};
export declare type PermissionsRequestDescriptor = {
    interface: DwnInterfaceName.Permissions;
    method: DwnMethodName.Request;
    dateCreated: string;
    conditions: PermissionConditions;
    description: string;
    grantedTo: string;
    grantedBy: string;
    objectId?: string;
    scope: PermissionScope;
};
export declare type PermissionsRequestMessage = BaseMessage & {
    descriptor: PermissionsRequestDescriptor;
};
export declare type PermissionsGrantDescriptor = {
    interface: DwnInterfaceName.Permissions;
    method: DwnMethodName.Grant;
    dateCreated: string;
    conditions: PermissionConditions;
    delegatedFrom?: string;
    description: string;
    grantedTo: string;
    grantedBy: string;
    objectId: string;
    permissionsRequestId?: string;
    scope: PermissionScope;
};
export declare type PermissionsGrantMessage = BaseMessage & {
    descriptor: PermissionsGrantDescriptor;
    delegationChain?: PermissionsGrantMessage;
};
//# sourceMappingURL=permissions-types.d.ts.map