import { decodeMetadata } from '../../utils/metadata'; import { LinkTransferHistoryItem } from '../../types'; import { splitAddress } from './utils'; export const ONETIME_LOCK_QUERY_BY_USER = `query onetimeLocks($limit: Int, $offset: Int, $address: Bytes!) { onetimeLocks( first: $limit skip: $offset orderBy: createdAt orderDirection: desc where: {sender: $address} ) { id amount expiry createdAt updatedAt metadata status recipient { id name } sender { id name } token { id } txHash } }`; export const ONETIME_LOCK_QUERY_BY_TOKEN = `query onetimeLocks($limit: Int, $offset: Int, $token: Bytes!) { onetimeLocks( first: $limit skip: $offset orderBy: createdAt orderDirection: desc where: {token: $token} ) { id amount expiry createdAt updatedAt metadata status recipient { id name } sender { id name } token { id } txHash } }`; export interface OnetimeLocksEntity { onetimeLocks: { id: string; token: { id: string; }; sender: { id: string; name?: string; }; recipient?: { id: string; name?: string; }; amount: string; expiry: string; metadata: string; txHash: string; createdAt: string; updatedAt: string; status: 'LIVE' | 'COMPLETED' | 'CANCELLED'; }[]; } export function transform( entities: OnetimeLocksEntity ): LinkTransferHistoryItem[] { return entities.onetimeLocks.map((entity) => ({ id: entity.id, messageId: entity.id, token: entity.token.id, sender: entity.sender.id, recipient: entity.recipient?.id, senderName: entity.sender.name || splitAddress(entity.sender.id), recipientName: entity.recipient?.name || (entity.recipient ? splitAddress(entity.recipient.id) : undefined), amount: BigInt(entity.amount), expiry: Number(entity.expiry), metadata: decodeMetadata(entity.metadata as `0x${string}`), txHash: entity.txHash, status: entity.status, createdAt: Number(entity.createdAt), updatedAt: Number(entity.updatedAt), })); }