@aeternity/aepp-sdk
Version:
SDK for the æternity blockchain
80 lines (79 loc) • 3.26 kB
TypeScript
import { BuildTxOptions } from '../tx/builder/index.js';
import { Tag } from '../tx/builder/constants.js';
import { Encoded } from '../utils/encoder.js';
import { _getPollInterval } from '../chain.js';
import { sendTransaction, SendTransactionOptions } from '../send-transaction.js';
import Node from '../Node.js';
import AccountBase from '../account/Base.js';
import OracleBase, { OracleQuery } from './OracleBase.js';
/**
* @category oracle
*/
interface OracleRegisterOptions extends BuildTxOptions<Tag.OracleRegisterTx, 'accountId' | 'queryFormat' | 'responseFormat'>, Omit<SendTransactionOptions, 'onNode' | 'onAccount'> {
}
/**
* @category oracle
*/
interface OracleExtendTtlOptions extends BuildTxOptions<Tag.OracleExtendTx, 'callerId' | 'oracleId'>, Omit<SendTransactionOptions, 'onNode' | 'onAccount'> {
}
/**
* @category oracle
*/
interface OracleRespondToQueryOptions extends BuildTxOptions<Tag.OracleRespondTx, 'callerId' | 'oracleId' | 'queryId' | 'response'>, Omit<SendTransactionOptions, 'onNode' | 'onAccount'> {
}
/**
* @category oracle
*/
export default class Oracle extends OracleBase {
#private;
readonly account: AccountBase;
options: OracleRegisterOptions & OracleExtendTtlOptions & Parameters<Oracle['handleQueries']>[1] & {
onNode: Node;
};
/**
* @param account - Account to use as oracle
* @param options - Options object
*/
constructor(account: AccountBase, options: OracleRegisterOptions & OracleExtendTtlOptions & Parameters<Oracle['handleQueries']>[1] & {
onNode: Node;
});
/**
* Register oracle
* @param queryFormat - Format of query
* @param responseFormat - Format of query response
* @param options - Options object
*/
register(queryFormat: string, responseFormat: string, options?: OracleRegisterOptions): ReturnType<typeof sendTransaction>;
/**
* Extend oracle ttl
* @param options - Options object
*/
extendTtl(options?: OracleExtendTtlOptions): ReturnType<typeof sendTransaction>;
/**
* Poll for oracle queries
* @param onQuery - OnQuery callback
* @param options - Options object
* @param options.interval - Poll interval (default: 5000)
* @returns Callback to stop polling function
*/
pollQueries(onQuery: (query: OracleQuery) => void, options?: {
interval?: number;
includeResponded?: boolean;
} & Partial<Parameters<typeof _getPollInterval>[1]>): () => void;
/**
* Respond to a query
* @param queryId - Oracle query id
* @param response - The response to query
* @param options - Options object
*/
respondToQuery(queryId: Encoded.OracleQueryId, response: string, options?: OracleRespondToQueryOptions): ReturnType<typeof sendTransaction>;
/**
* Respond to queries to oracle based on callback value
* @param getResponse - Callback to respond on query
* @param options - Options object
* @param options.interval - Poll interval (default: 5000)
* @returns Callback to stop polling function
*/
handleQueries(getResponse: (q: OracleQuery) => Promise<string> | string, options?: Parameters<Oracle['pollQueries']>[1] & OracleRespondToQueryOptions): () => void;
}
export {};