import { Encoded } from '../utils/encoder.js';
import Node from '../Node.js';
/**
 * @category oracle
 */
type OracleQueryNode = Awaited<ReturnType<Node['getOracleQueryByPubkeyAndQueryId']>>;
/**
 * @category oracle
 */
export interface OracleQuery extends OracleQueryNode {
    id: Encoded.OracleQueryId;
    decodedQuery: string;
    decodedResponse: string;
}
/**
 * This class is needed because `getOracleQuery` would return different values depending on the
 * oracle type.
 * @category oracle
 */
export default class OracleBase {
    readonly address: Encoded.OracleAddress;
    options: {
        onNode: Node;
    };
    /**
     * @param address - Oracle public key
     */
    constructor(address: Encoded.OracleAddress, options: {
        onNode: Node;
    });
    /**
     * Get oracle entry from the node
     * @param options - Options object
     */
    getState(options?: {
        onNode?: Node;
    }): ReturnType<Node['getOracleByPubkey']>;
    /**
     * Get oracle queries from the node
     * @param options - Options object
     */
    getQueries(options?: {
        onNode?: Node;
    }): Promise<OracleQuery[]>;
    /**
     * Get oracle query entry from the node
     * @param queryId - Oracle query ID
     * @param options - Options object
     */
    getQuery(queryId: Encoded.OracleQueryId, options?: {
        onNode?: Node;
    }): Promise<OracleQuery>;
}
export {};
