#!/usr/bin/env python
"""
Pull position history (last 5000) for a specific pubkey

Usage:
    position_history --account <target_pubkey>
"""

import sys
import os
import time
import argparse
import json
from typing import Optional

sys.path.insert(0, '../api')
from bulk_api import BulkHttpClient



def position_history(
    auth: str,
    account: str,
    url: str,
) -> dict:
    """
    Load account info
    """
    client = BulkHttpClient(base_url=url, private_key=auth)
    return client.get_position_history(user=account)


def main():
    """Main entry point for the application"""
    auth = os.environ.get("BULK_AUTH_KEY")
    if not auth:
        raise ValueError("BULK_AUTH_KEY must be set")

    # Setup argument parser
    parser = argparse.ArgumentParser(
        description='Pull position history for a specific pubkey',
        formatter_class=argparse.RawDescriptionHelpFormatter,
    )

    parser.add_argument(
        '--account',
        type=str,
        required=True,
        help='account to query (base58)'
    )

    parser.add_argument(
        '--n',
        type=int,
        required=False,
        default=100,
        help='indicate how many positions to list'
    )

    parser.add_argument(
        '--url',
        type=str,
        default='https://exchange-api2.bulk.trade/api/v1',
        help='API base URL (default: testnet URL)'
    )

    args = parser.parse_args()

    result = position_history(auth=auth, account=args.account, url=args.url)
    js = json.dumps(result[:args.n], indent=2)
    print(js)


if __name__ == "__main__":
    main()
