@aeternity/aepp-sdk
Version:
SDK for the æternity blockchain
74 lines (67 loc) • 1.6 kB
JavaScript
import { decode } from '../utils/encoder.js';
/**
* @category oracle
*/
/**
* @category oracle
*/
function decodeQuery(queryEntry) {
return {
...queryEntry,
id: queryEntry.id,
decodedQuery: decode(queryEntry.query).toString(),
decodedResponse: decode(queryEntry.response).toString()
};
}
/**
* This class is needed because `getOracleQuery` would return different values depending on the
* oracle type.
* @category oracle
*/
export default class OracleBase {
/**
* @param address - Oracle public key
*/
constructor(address, options) {
this.address = address;
this.options = options;
}
/**
* Get oracle entry from the node
* @param options - Options object
*/
async getState(options = {}) {
const opt = {
...this.options,
...options
};
return opt.onNode.getOracleByPubkey(this.address);
}
/**
* Get oracle queries from the node
* @param options - Options object
*/
async getQueries(options = {}) {
const opt = {
...this.options,
...options
};
return (await opt.onNode.getOracleQueriesByPubkey(this.address)).oracleQueries.map(decodeQuery);
}
/**
* Get oracle query entry from the node
* @param queryId - Oracle query ID
* @param options - Options object
*/
async getQuery(queryId, options = {}) {
const {
onNode
} = {
...this.options,
...options
};
const queryEntry = await onNode.getOracleQueryByPubkeyAndQueryId(this.address, queryId);
return decodeQuery(queryEntry);
}
}
//# sourceMappingURL=OracleBase.js.map