import {test} from 'node:test'
import assert from 'node:assert'
import {getClientForAddress, getGmxRebateStatsImpl} from '../../src/plugins/custom/gmx.ts'

test('GMX get rebate stats', async (t) => {
  await t.test('should get rebate stats for account', async () => {
    const testAccount = '0xbBA4eaA534cbD0EcAed5E2fD6036Aec2E7eE309f'
    const sdk = await getClientForAddress(testAccount)

    const result = await getGmxRebateStatsImpl(sdk)
    
    console.log('Rebate stats result:', result)
    assert.ok(result, 'Rebate stats result should be defined')
    
    // Check that the result has the expected structure
    assert.ok(typeof result.totalRebateUsd === 'number', 'totalRebateUsd should be a number')
    assert.ok(typeof result.discountUsd === 'number', 'discountUsd should be a number')
    assert.ok(typeof result.volume === 'number', 'volume should be a number')
    assert.ok(typeof result.tier === 'number', 'tier should be a number')
    assert.ok(typeof result.rebateFactor === 'number', 'rebateFactor should be a number')
    assert.ok(typeof result.discountFactor === 'number', 'discountFactor should be a number')
    
    // All values should be non-negative
    assert.ok(result.totalRebateUsd >= 0, 'totalRebateUsd should be non-negative')
    assert.ok(result.discountUsd >= 0, 'discountUsd should be non-negative')
    assert.ok(result.volume >= 0, 'volume should be non-negative')
    assert.ok(result.tier >= 0, 'tier should be non-negative')
    assert.ok(result.rebateFactor >= 0, 'rebateFactor should be non-negative')
    assert.ok(result.discountFactor >= 0, 'discountFactor should be non-negative')
  })
}) 