UNPKG

whales-pre-market-aptos-sdk

Version:

TypeScript SDK for Whales Pre-Market on Aptos blockchain

306 lines (305 loc) 14.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EventCrawler = exports.EventDeserializer = void 0; const ts_sdk_1 = require("@aptos-labs/ts-sdk"); const type_1 = require("./type"); const graphqlClient_1 = require("./graphqlClient"); class EventDeserializer { configUpdatedEvent(event) { const deserializer = ts_sdk_1.Deserializer.fromHex(event.data); return { event_name: event.event_name, sender: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), discount_verifier_pubkey: ts_sdk_1.AccountAddress.fromStrict(deserializer.deserializeFixedBytes(32)).toString(), pledge_rate: deserializer.deserializeU64().toString(), fee_settle: deserializer.deserializeU64().toString(), fee_refund: deserializer.deserializeU64().toString(), fee_wallet: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), block_height: event.block_height, transaction_version: event.transaction_version, }; } roleAddedEvent(event) { const deserializer = ts_sdk_1.Deserializer.fromHex(event.data); return { event_name: event.event_name, sender: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), user: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), role: deserializer.deserializeU8(), block_height: event.block_height, transaction_version: event.transaction_version, }; } roleRemovedEvent(event) { const deserializer = ts_sdk_1.Deserializer.fromHex(event.data); return { event_name: event.event_name, sender: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), user: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), role: deserializer.deserializeU8(), block_height: event.block_height, transaction_version: event.transaction_version, }; } exTokenAddedEvent(event) { const deserializer = ts_sdk_1.Deserializer.fromHex(event.data); return { event_name: event.event_name, sender: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), token: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), block_height: event.block_height, transaction_version: event.transaction_version, }; } exTokenRemovedEvent(event) { const deserializer = ts_sdk_1.Deserializer.fromHex(event.data); return { event_name: event.event_name, sender: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), token: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), block_height: event.block_height, transaction_version: event.transaction_version, }; } newTokenEvent(event) { const deserializer = ts_sdk_1.Deserializer.fromHex(event.data); return { event_name: event.event_name, token_id: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), token_index: deserializer.deserializeU64().toString(), settle_duration: deserializer.deserializeU64().toString(), block_height: event.block_height, transaction_version: event.transaction_version, }; } newOfferEvent(event) { const deserializer = ts_sdk_1.Deserializer.fromHex(event.data); return { event_name: event.event_name, offer_id: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), offer_type: deserializer.deserializeU8(), token_id: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), token_index: deserializer.deserializeU64().toString(), amount: deserializer.deserializeU64().toString(), value: deserializer.deserializeU64().toString(), collateral: deserializer.deserializeU64().toString(), full_match: deserializer.deserializeBool(), doer: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), ex_token: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), block_height: event.block_height, transaction_version: event.transaction_version, }; } newOrderEvent(event) { const deserializer = ts_sdk_1.Deserializer.fromHex(event.data); return { event_name: event.event_name, order_id: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), offer_id: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), amount: deserializer.deserializeU64().toString(), seller: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), buyer: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), block_height: event.block_height, transaction_version: event.transaction_version, }; } settleFilledEvent(event) { const deserializer = ts_sdk_1.Deserializer.fromHex(event.data); return { event_name: event.event_name, order_id: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), value: deserializer.deserializeU64().toString(), fee: deserializer.deserializeU64().toString(), doer: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), block_height: event.block_height, transaction_version: event.transaction_version, }; } settleCancelledEvent(event) { const deserializer = ts_sdk_1.Deserializer.fromHex(event.data); return { event_name: event.event_name, order_id: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), value: deserializer.deserializeU64().toString(), fee: deserializer.deserializeU64().toString(), doer: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), block_height: event.block_height, transaction_version: event.transaction_version, }; } cancelOfferEvent(event) { const deserializer = ts_sdk_1.Deserializer.fromHex(event.data); return { event_name: event.event_name, offer_id: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), refund_value: deserializer.deserializeU64().toString(), refund_fee: deserializer.deserializeU64().toString(), doer: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), block_height: event.block_height, transaction_version: event.transaction_version, }; } closeOfferEvent(event) { const deserializer = ts_sdk_1.Deserializer.fromHex(event.data); return { event_name: event.event_name, offer_id: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), refund_amount: deserializer.deserializeU64().toString(), block_height: event.block_height, transaction_version: event.transaction_version, }; } forceCancelOrderEvent(event) { const deserializer = ts_sdk_1.Deserializer.fromHex(event.data); return { event_name: event.event_name, order_id: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), doer: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), block_height: event.block_height, transaction_version: event.transaction_version, }; } updateTokenSettleDurationEvent(event) { const deserializer = ts_sdk_1.Deserializer.fromHex(event.data); return { event_name: event.event_name, token_id: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), token_index: deserializer.deserializeU64().toString(), old_value: deserializer.deserializeU64().toString(), new_value: deserializer.deserializeU64().toString(), block_height: event.block_height, transaction_version: event.transaction_version, }; } tokenToSettlePhaseEvent(event) { const deserializer = ts_sdk_1.Deserializer.fromHex(event.data); return { event_name: event.event_name, token_id: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), token_index: deserializer.deserializeU64().toString(), token: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), settle_rate: deserializer.deserializeU64().toString(), settle_time: deserializer.deserializeU64().toString(), block_height: event.block_height, transaction_version: event.transaction_version, }; } tokenForceCancelSettlePhaseEvent(event) { const deserializer = ts_sdk_1.Deserializer.fromHex(event.data); return { event_name: event.event_name, token_id: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), token_index: deserializer.deserializeU64().toString(), status: deserializer.deserializeU8(), block_height: event.block_height, transaction_version: event.transaction_version, }; } tokenStatusToggledEvent(event) { const deserializer = ts_sdk_1.Deserializer.fromHex(event.data); return { event_name: event.event_name, token_id: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), token_index: deserializer.deserializeU64().toString(), old_status: deserializer.deserializeU8(), new_status: deserializer.deserializeU8(), block_height: event.block_height, transaction_version: event.transaction_version, }; } tokenCancelledEvent(event) { const deserializer = ts_sdk_1.Deserializer.fromHex(event.data); return { event_name: event.event_name, token_id: ts_sdk_1.AccountAddress.deserialize(deserializer).toString(), token_index: deserializer.deserializeU64().toString(), status: deserializer.deserializeU8(), block_height: event.block_height, transaction_version: event.transaction_version, }; } } exports.EventDeserializer = EventDeserializer; class EventCrawler { constructor(aptos, packageId, graphQlConfig) { this.graphqlClient = null; this.aptos = aptos; this.packageId = packageId; this.eventDeserializer = new EventDeserializer(); if (graphQlConfig) { this.graphqlClient = new graphqlClient_1.GraphQLClient(graphQlConfig); } } async getEvents(offset, limit = 25) { const events = await this.aptos.event.getModuleEventsByEventType({ eventType: `${ts_sdk_1.AccountAddress.fromStringStrict(this.packageId).toStringShort()}::event_config::EventWrapper`, options: { offset, limit, }, }); const parsedEvents = events.map((event) => this.parseEvent({ ...event.data, block_height: event.transaction_block_height, transaction_version: event.transaction_version, })); return parsedEvents.filter((event) => event !== null); } async getEventsV2(versionGt = 0, limit = 50, versionEq = null) { if (!this.graphqlClient) { throw new Error("GraphQL client not initialized"); } const events = await this.graphqlClient.getEvents(versionGt.toString(), limit, versionEq?.toString() || null); const parsedEvents = events.map((event) => this.parseEvent({ event_name: event.event_name, data: event.data, block_height: Number(event.block_height), transaction_version: Number(event.version), })); return parsedEvents.filter((event) => event !== null); } parseEvent(event) { switch (event.event_name) { case type_1.EventType.ConfigUpdatedEvent: return this.eventDeserializer.configUpdatedEvent(event); case type_1.EventType.RoleAddedEvent: return this.eventDeserializer.roleAddedEvent(event); case type_1.EventType.RoleRemovedEvent: return this.eventDeserializer.roleRemovedEvent(event); case type_1.EventType.ExTokenAddedEvent: return this.eventDeserializer.exTokenAddedEvent(event); case type_1.EventType.ExTokenRemovedEvent: return this.eventDeserializer.exTokenRemovedEvent(event); case type_1.EventType.NewTokenEvent: return this.eventDeserializer.newTokenEvent(event); case type_1.EventType.NewOfferEvent: return this.eventDeserializer.newOfferEvent(event); case type_1.EventType.NewOrderEvent: return this.eventDeserializer.newOrderEvent(event); case type_1.EventType.SettleFilledEvent: return this.eventDeserializer.settleFilledEvent(event); case type_1.EventType.SettleCancelledEvent: return this.eventDeserializer.settleCancelledEvent(event); case type_1.EventType.CancelOfferEvent: return this.eventDeserializer.cancelOfferEvent(event); case type_1.EventType.CloseOfferEvent: return this.eventDeserializer.closeOfferEvent(event); case type_1.EventType.ForceCancelOrderEvent: return this.eventDeserializer.forceCancelOrderEvent(event); case type_1.EventType.UpdateTokenSettleDurationEvent: return this.eventDeserializer.updateTokenSettleDurationEvent(event); case type_1.EventType.TokenToSettlePhaseEvent: return this.eventDeserializer.tokenToSettlePhaseEvent(event); case type_1.EventType.TokenForceCancelSettlePhaseEvent: return this.eventDeserializer.tokenForceCancelSettlePhaseEvent(event); case type_1.EventType.TokenStatusToggledEvent: return this.eventDeserializer.tokenStatusToggledEvent(event); case type_1.EventType.TokenCancelledEvent: return this.eventDeserializer.tokenCancelledEvent(event); default: console.log(`Unknown event type: ${event.event_name}`); return null; } } } exports.EventCrawler = EventCrawler;