<?php
namespace ccxt;

// ----------------------------------------------------------------------------

// PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
// https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code

// -----------------------------------------------------------------------------
include_once PATH_TO_CCXT . '/test/exchange/base/test_shared_methods.php';

function test_ledger_entry($exchange, $skipped_properties, $method, $entry, $requested_code, $now) {
    $format = array(
        'info' => array(),
        'id' => 'x1234',
        'currency' => 'BTC',
        'account' => 'spot',
        'referenceId' => 'foo',
        'referenceAccount' => 'bar',
        'status' => 'ok',
        'amount' => $exchange->parse_number('22'),
        'before' => $exchange->parse_number('111'),
        'after' => $exchange->parse_number('133'),
        'fee' => array(),
        'direction' => 'in',
        'timestamp' => 1638230400000,
        'datetime' => '2021-11-30T00:00:00.000Z',
        'type' => 'deposit',
    );
    $empty_allowed_for = ['referenceId', 'referenceAccount', 'id'];
    assert_structure($exchange, $skipped_properties, $method, $entry, $format, $empty_allowed_for);
    assert_timestamp_and_datetime($exchange, $skipped_properties, $method, $entry, $now);
    assert_currency_code($exchange, $skipped_properties, $method, $entry, $entry['currency'], $requested_code);
    //
    assert_in_array($exchange, $skipped_properties, $method, $entry, 'direction', ['in', 'out']);
    assert_in_array($exchange, $skipped_properties, $method, $entry, 'type', ['trade', 'transaction', 'margin', 'cashback', 'referral', 'transfer', 'fee']);
    // testSharedMethods.assertInArray (exchange, skippedProperties, method, entry, 'account', ['spot', 'swap', .. ]); // todo
    assert_greater_or_equal($exchange, $skipped_properties, $method, $entry, 'amount', '0');
    assert_greater_or_equal($exchange, $skipped_properties, $method, $entry, 'before', '0');
    assert_greater_or_equal($exchange, $skipped_properties, $method, $entry, 'after', '0');
}
