import { Script } from '@ts-bitcoin/core';
import { Key } from 'univrse';
export type HashAlgorithms = 'SHA-256' | 'SHA-512';
/**
 * Output definition to be provided when creating a HashOuput via createTransaction
 */
export interface HashOutput {
    type: 'hashv1';
    /** File raw contents. Not stored on-chain */
    data: Uint8Array;
    /** Hash algorithm. Either 'SHA-256' or 'SHA-512' */
    algorithm: HashAlgorithms;
    /** If true the generated data will be signed */
    sign?: boolean;
    /** If true the generated data will be encrypted */
    encrypt?: boolean;
    key?: Key;
}
/**
 * Hash data generated info
 */
export interface HashInfo {
    /** File contents digest as Hex. Not stored on-chain */
    digestHex: string;
    /** File contents digest as Uint8Array. Stored on-chain */
    digest: Uint8Array;
    /** Hash algorithm used to generate digest. Either 'SHA-256' or 'SHA-512' */
    algorithm: HashAlgorithms;
    /** If true the data has been signed */
    sign?: boolean;
    /** If true the data has been encrypted */
    encrypt?: boolean;
    PROTOCOL_ID: string;
}
export declare class Hash {
    static PROTOCOL_ID: string;
    readonly info: HashInfo;
    private envelope;
    private constructor();
    private createEnvelope;
    static create(options: HashOutput): Promise<Hash>;
    toOpReturnScriptHex(): string;
    static fromOpReturnScript(script: Script, key?: Key | string): Promise<Hash>;
}
