from .engine import Registry

def build_demo(steps=120):
    r=Registry()
    market=r.call('CreateMarket',{'valuation_date':'2026-11-08','currency':'EUR'})['id']
    market=r.call('AddCurve',{'market_id':market,'curve':{'times':[0,1,2,3,5,10],'discount_factors':[1,0.9753099120283326,0.951229424500714,0.9277434863285529,0.8824969025845955,0.7788007830714049],'interpolation':'log_df'}})['id']
    market=r.call('SetModelParameters',{'market_id':market,'a':.1,'sigma':.01})['id']
    swap=r.call('CreateSwap',{'notional':1000000,'start':1,'payment_times':[2,3,4,5,6],'fixed_rate':.025,'direction':1})['id']
    ex=r.call('CreateExerciseSchedule',{'times':[1,2,3,4,5]})['id']
    berm=r.call('CreateBermudanSwaption',{'swap_id':swap,'exercise_id':ex})['id']
    pr=r.call('CreatePricer',{'market_id':market,'trade_id':berm,'steps':steps})['id']
    return r,pr
if __name__=='__main__':
    import json
    r,p=build_demo(); print(json.dumps(r.call('RunValuation',{'pricer_id':p}),indent=2))
