UNPKG

@aeternity/aepp-sdk

Version:

SDK for the æternity blockchain

80 lines (79 loc) 3.26 kB
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 {};