import type { KeyValues } from '../types/query-types.js';
import type { MessageSigner } from '../types/signer.js';
import type { ValidationStateReader } from '../types/validation-state-reader.js';
import type { DataEncodedRecordsWriteMessage, RecordsDeleteMessage, RecordsWriteMessage } from '../types/records-types.js';
import { AbstractMessage } from '../core/abstract-message.js';
export type RecordsDeleteOptions = {
    recordId: string;
    messageTimestamp?: string;
    protocolRole?: string;
    signer: MessageSigner;
    /**
     * Denotes if all the descendent records should be purged. Defaults to `false`.
     */
    prune?: boolean;
    /**
     * The ID of the permission grant authorizing this delete.
     */
    permissionGrantId?: string;
    /**
     * The delegated grant to sign on behalf of the logical author, which is the grantor (`grantedBy`) of the delegated grant.
     */
    delegatedGrant?: DataEncodedRecordsWriteMessage;
};
export declare class RecordsDelete extends AbstractMessage<RecordsDeleteMessage> {
    static parse(message: RecordsDeleteMessage): Promise<RecordsDelete>;
    /**
     * Creates a RecordsDelete message.
     * @param options.recordId If `undefined`, will be auto-filled as a originating message as convenience for developer.
     * @param options.messageTimestamp If `undefined`, it will be auto-filled with current time.
     */
    static create(options: RecordsDeleteOptions): Promise<RecordsDelete>;
    /**
     * Indexed properties needed for MessageStore indexing.
     *
     * Immutable record facts (`protocol`, `protocolPath`, `recipient`, `schema`, `parentId`,
     * `dateCreated`, `contextId`) come from the initial `RecordsWrite`. Mutable query-visibility
     * facts (flattened `tag.*`, `published`, and `datePublished`) come from the newest retained
     * `RecordsWrite` that existed immediately before this delete, because tombstone visibility must
     * reflect the record state being deleted: without them, tombstones of tagged records never match
     * tag filters (e.g. the permission shadow filters on `tag.protocol`) and tombstones of published
     * records never match `published: true` or `datePublished` queries and subscriptions.
     */
    constructIndexes(initialWrite: RecordsWriteMessage, visibilitySourceWrite: RecordsWriteMessage): KeyValues;
    authorizeDelegate(recordsWriteToDelete: RecordsWriteMessage, validationStateReader: ValidationStateReader): Promise<void>;
}
//# sourceMappingURL=records-delete.d.ts.map