import { Address } from 'viem'; import { TokenHolder } from '../../types'; import { splitAddress } from './utils'; export const TOKEN_HOLDER_QUERY = `query tokenHolder($id: ID) { tokenHolder( id: $id ) { id token { id } holder { id name } balance receivedAmount sentAmount receivedCount sentCount uniqueReceivedCount uniqueSentCount createdAt updatedAt } }`; export interface TokenHolderEntity { tokenHolder: { id: string; token: { id: string; }; holder: { id: string; name?: string; }; balance: string; receivedAmount: string; sentAmount: string; receivedCount: string; sentCount: string; uniqueReceivedCount: string; uniqueSentCount: string; createdAt: string; updatedAt: string; }; } export function transform(entity: TokenHolderEntity): TokenHolder { return { id: entity.tokenHolder.id, token: entity.tokenHolder.token.id as Address, holderAddress: entity.tokenHolder.holder.id as Address, holderName: entity.tokenHolder.holder.name || splitAddress(entity.tokenHolder.holder.id), balance: BigInt(entity.tokenHolder.balance), receivedAmount: BigInt(entity.tokenHolder.receivedAmount), sentAmount: BigInt(entity.tokenHolder.sentAmount), receivedCount: Number(entity.tokenHolder.receivedCount), sentCount: Number(entity.tokenHolder.sentCount), uniqueReceivedCount: Number(entity.tokenHolder.uniqueReceivedCount), uniqueSentCount: Number(entity.tokenHolder.uniqueSentCount), createdAt: Number(entity.tokenHolder.createdAt), updatedAt: Number(entity.tokenHolder.updatedAt), }; }