import { PType } from "../../PType/index.js";
import { Term } from "../../Term/index.js";
import { LitteralPurpose } from "../LitteralPurpose.js";
import { TermType } from "../../type_system/index.js";
import { PlutusScriptType } from "../../../utils/PlutusScriptType.js";
export declare class Precompiled<Purp extends LitteralPurpose = LitteralPurpose> {
    readonly purpose: Purp;
    readonly apply: (...args: Term<PType>[]) => Uint8Array;
    readonly params: TermType[];
    readonly validatorType: TermType;
    readonly outputType: TermType;
    readonly precompiled: Uint8Array;
    readonly hash: Uint8Array;
    constructor(purpose: Purp, fullType: TermType, precompiled: Uint8Array, pulutsVersion?: PlutusScriptType);
    toJSON(): {
        purpose: Purp;
        params: import("../../type_system/index.js").TermTypeJson[];
        validatorType: import("../../type_system/index.js").TermTypeJson;
        precompiledHex: string;
    };
    toJson(): {
        purpose: Purp;
        params: import("../../type_system/index.js").TermTypeJson[];
        validatorType: import("../../type_system/index.js").TermTypeJson;
        precompiledHex: string;
    };
    static fromJson(json: any): Precompiled;
}
