import type { PermissionsRequest } from './permissions-request.js';
import type { SignatureInput } from '../types/jws-types.js';
import type { PermissionConditions, PermissionScope } from '../types/permissions-types.js';
import type { PermissionsGrantMessage } from '../types/permissions-types.js';
import { Message } from '../core/message.js';
export declare type PermissionsGrantOptions = {
    messageTimestamp?: string;
    description?: string;
    grantedTo: string;
    grantedBy: string;
    grantedFor: string;
    permissionsRequestId?: string;
    scope: PermissionScope;
    conditions?: PermissionConditions;
    authorizationSignatureInput: SignatureInput;
};
export declare type CreateFromPermissionsRequestOverrides = {
    description?: string;
    grantedTo?: string;
    grantedBy?: string;
    grantedFor?: string;
    scope?: PermissionScope;
    conditions: PermissionConditions;
};
export declare class PermissionsGrant extends Message<PermissionsGrantMessage> {
    static parse(message: PermissionsGrantMessage): Promise<PermissionsGrant>;
    static create(options: PermissionsGrantOptions): Promise<PermissionsGrant>;
    /**
     * generates a PermissionsGrant using the provided PermissionsRequest
     * @param permissionsRequest
     * @param authorizationSignatureInput - the private key and additional signature material of the grantor
     * @param overrides - optional overrides that will be used instead of the properties in `permissionsRequest`
     */
    static createFromPermissionsRequest(permissionsRequest: PermissionsRequest, authorizationSignatureInput: SignatureInput, overrides?: CreateFromPermissionsRequestOverrides): Promise<PermissionsGrant>;
    authorize(): void;
}
//# sourceMappingURL=permissions-grant.d.ts.map