wowok_agent
Version:
Agent for WoWok: Unlock Co-Creation, Lighting Transaction, Empower Potential.
35 lines (29 loc) • 1.68 kB
text/typescript
import { ERROR, Errors, Protocol, Treasury, TreasuryReceived, TreasuryReceivedObject } from "wowok";
import { query_objects } from "./objects.js";
export interface QueryTreasuryReceived {
/** Name or address of the Treasury object. */
treasury_object: string;
/**
* An optional paging cursor. If provided, the query will start from the next item after the specified
* cursor. Default to start from the first item if not specified.
*/
cursor?: string | null | undefined;
/** Max number of items returned per page, default to [QUERY_MAX_RESULT_LIMIT] if not specified. */
limit?: number | null | undefined;
}
export const query_treasury_received = async (query: QueryTreasuryReceived) : Promise<TreasuryReceived> => {
const r1 = await query_objects({objects:[query.treasury_object]});
if (r1?.objects?.length !== 1 || r1.objects[0].type !== 'Treasury') {
ERROR(Errors.InvalidParam, 'query_treasury_received: invalid treasury_object');
}
const type = Protocol.Instance().package('wowok')+'::payment::CoinWrapper<'+Treasury.parseObjectType(r1.objects[0].type_raw)+'>';
const r2 = await Protocol.Client().getOwnedObjects({owner:r1.objects[0].object, filter:{StructType: type},
options:{showContent:true, showType:true}, cursor:query.cursor, limit:query.limit});
let receive = BigInt(0);
const res: TreasuryReceivedObject[] = r2.data.map((v:any) => {
const i = v?.data?.content?.fields;
receive += BigInt(i?.coin?.fields?.balance);
return {payment:i?.payment, balance:i?.coin?.fields?.balance, id:v?.data?.objectId}
});
return {balance:receive.toString(), received:res};
}