import { getAddress } from 'viem'; import { PumActionHistory } from '../../../types'; export const PUM_ACTION_HISTORY_QUERY = `query pumActionHistories($limit: Int, $offset: Int, $user: Bytes!) { pumActionHistories( first: $limit skip: $offset orderBy: createdAt orderDirection: desc where: { user: $user } ) { id user { id name } token { id name symbol issuer { name address } } action recipient { id name } amountIn amountOut txHash createdAt } }`; export const PUM_TIMELINE_QUERY = `query pumTimeline($limit: Int, $offset: Int) { pumActionHistories( first: $limit skip: $offset orderBy: createdAt orderDirection: desc ) { id user { id name } token { id name symbol issuer { name address } } action recipient { id name } amountIn amountOut txHash createdAt } }`; export interface PumActionHistoryEntities { pumActionHistories: { id: string; user: { id: string; name?: string; }; token: { id: string; name: string; symbol: string; issuer: { name: string; address: string; }; } | null; action: string; recipient: { id: string; name?: string; } | null; amountIn: string | null; amountOut: string | null; txHash: string; createdAt: string; }[]; } export function transform( entity: PumActionHistoryEntities ): PumActionHistory[] { return entity.pumActionHistories.map((pumActionHistory) => ({ id: pumActionHistory.id, user: { address: getAddress(pumActionHistory.user.id), name: pumActionHistory.user.name, }, token: pumActionHistory.token ? { address: getAddress(pumActionHistory.token.id), name: pumActionHistory.token.name, symbol: pumActionHistory.token.symbol, issuer: { name: pumActionHistory.token.issuer.name, address: getAddress(pumActionHistory.token.issuer.address), }, } : undefined, action: pumActionHistory.action as 'ISSUE' | 'BUY' | 'SELL' | 'POINT', recipient: pumActionHistory.recipient ? { address: getAddress(pumActionHistory.recipient.id), name: pumActionHistory.recipient.name, } : undefined, amountIn: pumActionHistory.amountIn ? BigInt(pumActionHistory.amountIn) : undefined, amountOut: pumActionHistory.amountOut ? BigInt(pumActionHistory.amountOut) : undefined, txHash: pumActionHistory.txHash, createdAt: Number(pumActionHistory.createdAt), })); }