import { rabinSig, rabinPrivKey, rabinPubKey } from "rabinsig";
import { SigHashPreimage, Bytes } from "scryptlib";
import { AbstractContract } from "scryptlib/dist/contract";
import { FunctionCall } from "scryptlib/dist/abi";
import { version } from "./contracts";
export declare type oracleDetail = {
    pubKey: rabinPubKey;
    votes: number;
    committed?: boolean;
    voted?: boolean;
};
export declare const rabinKeyByteLength = 126;
export declare const oracleInfoByteLength: number;
export declare const oracleStateByteLength = 2;
export declare const commitmentHash = "0E47D25DE560350A3717647DD69C4B5E190A46484589A20435CE79CE002E07DB";
export declare function getTotalVotes(oracleDetails: oracleDetail[]): number;
export declare function isValidOracleDetails(oracleDetails: oracleDetail[]): oracleDetails is oracleDetail[];
export declare function getOracleDetailHex(oracleDetail: oracleDetail): string;
export declare function getOracleDetailsHex(oracleDetails: oracleDetail[]): string;
export declare function getOracleStateHex(oracleDetail: oracleDetail): string;
export declare function getOracleStatesHex(oracleDetails: oracleDetail[]): string;
export declare function getOraclePubKeyFromHex(hex: string): bigint;
export declare function getOracleDetailsFromHex(oracleKeysHex: string, oracleStatesHex: string): oracleDetail[];
export declare function getOracleSigHex(signature: rabinSig, keyPos: number): string;
export declare function getOracleSigsString(oracleSigs: rabinSig[]): string;
/**
 * Generates a valid decision signature. Intended for oracle and testing usage.
 *
 * @param message Should be 0 or 1
 * @param privKey
 */
export declare function getSignature(message: string, privKey: rabinPrivKey): rabinSig;
interface oracleContract extends AbstractContract {
    update(preimage: SigHashPreimage, action: number, details: Bytes, oracleSig: bigint, paddingCount: number, burnSats: number): FunctionCall;
}
export declare function getOracleToken(pubKey: rabinPubKey, version?: version): oracleContract;
export declare function getOracleVersion(identifier: string): version;
export {};
