from importlib import reload
import os, time
from py_clob_client.constants import POLYGON
from py_clob_client.client import ClobClient
from py_clob_client.clob_types import OrderArgs, ApiCreds, BalanceAllowanceParams, AssetType
from dotenv import load_dotenv
from polymarket_classes import LinearPiecewiseFunction, Book, calculate_arbitrage

load_dotenv()

host = "https://clob.polymarket.com"
key = os.getenv("PRIVATE_KEY")
chain_id = POLYGON

client = ClobClient(host, key=key, chain_id=chain_id)
client.set_api_creds(client.create_or_derive_api_creds())

def get_book_for_token_id(token_id: str) -> Book:
    orderbook = client.get_order_book(token_id)
    return Book(
        token_id=token_id,
        bids=[(float(os.price), float(os.size)) for os in orderbook.bids],
        asks=[(float(os.price), float(os.size)) for os in orderbook.asks],
    )



biden_drops_out = [{'token_id': '80466862227762400456474037114326989569691448086113369690204721936360568404468', 'outcome': 'Yes', 'price': 0.515, 'winner': False}, {'token_id': '55053017623018167103206225381535351479731721326578895660347356086269854794785', 'outcome': 'No', 'price': 0.485, 'winner': False}]
biden_nominee = [{'token_id': '29771515314065403331935508893946579645282141892225585852084723308418208825505', 'outcome': 'Yes', 'price': 0.625, 'winner': False}, {'token_id': '73890423855099261268197674979498041824881965319673879879507212961483126998683', 'outcome': 'No', 'price': 0.375, 'winner': False}]

biden_drops_out_yes = get_book_for_token_id(biden_drops_out[0]['token_id'])
biden_nominee_no = get_book_for_token_id(biden_nominee[1]['token_id'])

biden_drops_out_yes.print_book()
biden_nominee_no.print_book()

biden_drops_out_yes.save_as_pickle()
biden_nominee_no.save_as_pickle()
