diff --git a/assets/index-0Du5VMEo.css b/assets/index-0Du5VMEo.css new file mode 100644 index 0000000..7c5e6b1 --- /dev/null +++ b/assets/index-0Du5VMEo.css @@ -0,0 +1 @@ +.create-pool-button-wrapper{position:absolute;top:2rem;right:2rem;z-index:10}.create-pool-button{background:linear-gradient(135deg,#7a4ff3,#6340c4);color:#fff;border:none;padding:.75rem 1.5rem;border-radius:12px;font-weight:500;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 12px #7a4ff333;white-space:nowrap}.button-content{display:flex;align-items:center;gap:.5rem}.plus-icon{font-size:1.2rem;font-weight:700;display:flex;align-items:center;justify-content:center;width:20px;height:20px;background:#fff3;border-radius:50%}.button-text{font-size:.95rem;font-weight:500}.create-pool-button:hover{background:linear-gradient(135deg,#6340c4,#5233a3);transform:translateY(-2px);box-shadow:0 6px 16px #7a4ff34d}.create-pool-button:active{transform:translateY(0);box-shadow:0 2px 8px #7a4ff333}.create-pool-form-container{position:absolute;top:0;right:0;bottom:0;left:0;background:#1a1b23;display:flex;flex-direction:column;align-items:center;z-index:50;padding:2rem;border-radius:20px;overflow-y:auto;height:auto;min-height:100%}.create-pool-form{width:100%;max-width:560px;margin:0 auto;padding:0 0 2rem;background:transparent;border:none;box-shadow:none;display:flex;flex-direction:column;gap:1.5rem}.back-button{position:absolute;top:2rem;left:2rem;background:#ffffff1a;border:none;color:#fff9;cursor:pointer;display:flex;align-items:center;gap:.5rem;font-size:.9rem;padding:.75rem 1rem;border-radius:12px;transition:all .3s ease;z-index:10}.back-button:hover{color:#fff;background:#ffffff26}.form-title{text-align:center;color:#fff;font-size:1.5rem;font-weight:600;margin:1rem 0 2rem}.form-group{margin-bottom:0}.form-group label{display:block;color:#fffc;margin-bottom:.5rem;font-size:.9rem}.form-group input{width:100%;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:.75rem 1rem;color:#fff;font-size:.9rem;transition:all .3s ease}.form-group input:focus{outline:none;border-color:#7a4ff3;background:#7a4ff31a}.form-group input:disabled{opacity:.5;cursor:not-allowed}.submit-button{width:100%;background:#7a4ff3;color:#fff;border:none;border-radius:12px;padding:1rem;font-weight:500;cursor:pointer;transition:all .3s ease;margin-top:1rem;position:relative;bottom:0}.submit-button:hover:not(:disabled){background:#6340c4;transform:translateY(-2px)}.submit-button:disabled{opacity:.5;cursor:not-allowed}.error-message{background:#ff3b301a;color:#ff3b30;padding:1rem;border-radius:12px;margin-bottom:1.5rem;font-size:.9rem}.success-message{background:#34c7591a;color:#34c759;padding:1rem;border-radius:12px;margin-bottom:1.5rem;font-size:.9rem}.success-message a{color:#34c759;text-decoration:underline;margin-left:.5rem}.pool-list-title{position:relative;z-index:20;padding-left:8rem}@media (max-width: 768px){.create-pool-form{padding:1.5rem;margin:1rem}.back-button{top:1rem;left:1rem}}.pool-item{background:#ffffff0d;border-radius:24px;padding:2rem;border:1px solid rgba(255,255,255,.1);margin-bottom:2rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 4px 24px #0000001a}.pool-header{margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid rgba(255,255,255,.1)}.pool-header h3{font-size:1.5rem;font-weight:600;color:#fff;margin:0}.pool-info{background:#0003;border-radius:16px;padding:1.5rem;margin-bottom:1.5rem}.pool-details{display:flex;justify-content:space-between;align-items:center;padding:.75rem 0;border-bottom:1px solid rgba(255,255,255,.05)}.pool-details:last-child{border-bottom:none}.pool-label{color:#fff9;font-size:.9rem;font-weight:500}.pool-value{color:#fff;font-size:.9rem;font-family:monospace;max-width:60%;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pool-price-info{background:#7a4ff31a;border-radius:16px;padding:1.5rem;margin:1.5rem 0;border:1px solid rgba(122,79,243,.2)}.pool-price-info h4{color:#fff;margin:0 0 1rem;font-size:1.1rem;font-weight:600}.loading-prices{color:#fff9;text-align:center;padding:1rem 0}.pool-actions{display:flex;gap:1rem;margin:1.5rem 0}.action-button{flex:1;background:linear-gradient(135deg,#7a4ff3,#9945ff);color:#fff;border:none;border-radius:12px;padding:.75rem 1.5rem;font-size:.95rem;font-weight:500;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;gap:.5rem}.action-button:hover{transform:translateY(-2px);box-shadow:0 4px 12px #7a4ff34d}.action-button:active{transform:translateY(0)}.form-container{background:#ffffff08;border-radius:16px;padding:1.5rem;margin-top:1rem;border:1px solid rgba(255,255,255,.08)}@media (max-width: 768px){.pool-item{padding:1.5rem}.pool-info,.pool-price-info{padding:1rem}.pool-details{flex-direction:column;align-items:flex-start;gap:.5rem}.pool-value{max-width:100%;text-align:left}.pool-actions{flex-direction:column}.action-button{width:100%}}.form-container{animation:fadeIn .3s ease-out}.dashboard-container{width:100%;height:100%}.pool-content{width:100%;max-width:900px;margin:0 auto;padding:2rem;position:relative}.pool-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;width:100%;background:transparent;border:none}.pool-list-title{font-size:1.8rem;font-weight:600;color:#fff;margin:0}.pool-list{display:flex;flex-direction:column;gap:1rem;width:100%;padding:1rem 0;box-sizing:border-box}.pool-list-item{background:#ffffff0d;border-radius:16px;padding:1.5rem;width:100%;border:1px solid rgba(255,255,255,.1);cursor:pointer;transition:all .3s ease;box-sizing:border-box;margin:0;max-width:100%;overflow:hidden}.pool-tokens{display:flex;align-items:center;justify-content:space-between;gap:1rem;width:100%}.token-info{display:flex;flex-direction:column;gap:.5rem;flex:1}.token-label{color:#fff9;font-size:.9rem}.token-address{color:#fff;font-size:1rem;word-break:break-all}.token-separator{color:#ffffff4d;margin:0 1rem}.pool-list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;width:100%}.pool-list-item:hover{transform:translateY(-2px);background:#ffffff14;border-color:#7a4ff380;box-shadow:0 4px 20px #7a4ff326}.pool-view-details{position:absolute;bottom:1rem;right:1.5rem;color:#7a4ff3;font-weight:500;font-size:.9rem;display:flex;align-items:center;gap:.5rem;opacity:0;transition:all .3s ease}.pool-list-item:hover .pool-view-details{opacity:1;transform:translate(-5px)}.back-button{align-self:flex-start;background:transparent;border:1px solid rgba(255,255,255,.1);color:#fff;padding:.75rem 1.5rem;border-radius:12px;cursor:pointer;transition:all .3s ease;margin-bottom:2rem;display:flex;align-items:center;gap:.5rem;font-weight:500}.back-button:hover{background:#ffffff0d;transform:translate(-2px)}.pool-list-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:200px;color:#fff9;gap:1rem}.loading-spinner{width:40px;height:40px;border:3px solid rgba(255,255,255,.1);border-radius:50%;border-top-color:#7a4ff3;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.no-pools-message{text-align:center;color:#fff9;padding:3rem;background:#ffffff0d;border-radius:16px;border:1px solid rgba(255,255,255,.1)}@media (max-width: 768px){.pool-list-container{padding:0 1rem}.pool-list{grid-template-columns:1fr}.pool-list-title{font-size:1.5rem;margin-bottom:1.5rem}}.pool-detail-view{width:100%;max-width:900px;margin:0 auto;display:flex;flex-direction:column;align-items:center}.pool-item{width:100%}@media (min-width: 768px){.pool-list{grid-template-columns:minmax(300px,600px)}}.dashboard-wrapper{min-height:calc(100vh - 72px);width:100%;background:#1c1c28;overflow-y:auto;position:relative}.dashboard-container{max-width:1200px;margin:0 auto;padding:2rem}.dashboard-content{width:100%;display:flex;flex-direction:column;align-items:center}.navigation-tabs{display:flex;justify-content:center;align-items:center;gap:.75rem;margin-bottom:2rem;padding:.75rem;background:#ffffff08;border-radius:20px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.08);box-shadow:0 4px 24px #00000026;width:fit-content}.nav-tab{padding:12px 24px;border-radius:16px;border:none;background:transparent;color:#fff9;font-weight:500;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;justify-content:center;gap:.75rem;font-size:.95rem;position:relative;overflow:hidden;min-width:120px}.tab-icon{font-size:1.2rem;display:flex;align-items:center;justify-content:center;transition:transform .3s ease}.tab-label{font-weight:600;letter-spacing:.3px;white-space:nowrap}.nav-tab:hover{color:#ffffffe6;background:#ffffff12;transform:translateY(-1px)}.nav-tab:hover .tab-icon{transform:scale(1.1)}.nav-tab.active{background:linear-gradient(135deg,#7a4ff3,#9945ff);color:#fff;box-shadow:0 4px 15px #7a4ff34d;border:1px solid rgba(255,255,255,.1)}.nav-tab.active:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(45deg,#ffffff1a,#fff0);border-radius:inherit}.nav-tab[data-tab=amm] .tab-icon{color:#ff9800}.nav-tab[data-tab=pool] .tab-icon{color:#2196f3}.nav-tab[data-tab=lenderPool] .tab-icon{color:#4caf50}.nav-tab[data-tab=borrowerPool] .tab-icon{color:#e91e63}.nav-tab[data-tab=liquidate] .tab-icon{color:#ff5722}.nav-tab.active .tab-icon{color:#fff}.tab-content{background:#ffffff0d;border-radius:24px;padding:2rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1);width:100%;min-height:400px;box-shadow:0 4px 24px #0000001a}.loading-state{display:flex;justify-content:center;align-items:center;min-height:200px;color:#fff9}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:200px;padding:2rem;text-align:center;color:#fff9}.empty-state-icon{font-size:2.5rem;margin-bottom:1rem;opacity:.5}.empty-state-text{font-size:1.1rem;margin-bottom:.5rem}.empty-state-subtext{font-size:.9rem;opacity:.7}@media (max-width: 768px){.navigation-tabs{padding:.5rem;gap:.5rem;flex-wrap:wrap;width:100%}.nav-tab{flex:1 1 calc(33.33% - .5rem);padding:10px 16px;min-width:auto}.tab-content{padding:1.5rem}}@media (max-width: 480px){.dashboard-container{padding:1rem}.nav-tab{flex:1 1 calc(50% - .5rem)}.tab-icon{font-size:1.1rem}.tab-label{font-size:.9rem}.tab-content{padding:1rem}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.tab-content{animation:fadeIn .3s ease-out}:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body{width:100%;min-height:100vh;background-color:#1c1c28;color:#fff;margin:0;padding:0}.container{min-height:100vh;width:100%}.main-content{max-width:1200px;margin:0 auto;padding:24px}.navbar{width:100%;background-color:#ffffff0d;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid rgba(255,255,255,.1);position:fixed;top:0;z-index:100}.navbar-content{width:100%;max-width:1200px;margin:0 auto;padding:0 2rem;display:flex;justify-content:space-between;align-items:center;height:64px}.solana-network-select-container{position:relative;display:inline-block}.solana-network-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#1c1c1c;border:1px solid #383838;border-radius:12px;padding:8px 36px 8px 12px;font-size:14px;font-weight:500;color:#fff;cursor:pointer;transition:all .2s ease;min-width:160px;height:40px}.solana-network-select:hover{border-color:#4e44ce;background-color:#232323}.solana-network-select:focus{outline:none;border-color:#9945ff;box-shadow:0 0 0 2px #9945ff1a}.solana-network-select-container:after{content:"";position:absolute;right:12px;top:50%;transform:translateY(-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #FFFFFF;pointer-events:none}.action-button,.lending-pool-action-button,.lending-pool-refresh-button{background-color:#512da8;color:#fff;padding:10px 20px;border:none;border-radius:5px;cursor:pointer;font-size:14px;margin:5px;transition:all .3s ease;width:auto}.action-button:hover,.lending-pool-action-button:hover,.lending-pool-refresh-button:hover{background-color:#45a049;transform:translateY(-2px);box-shadow:0 2px 5px #0003}.action-button:disabled,.lending-pool-action-button:disabled,.lending-pool-refresh-button:disabled{background-color:#ccc;cursor:not-allowed;transform:none;box-shadow:none;opacity:.7}.error-message{background-color:#ff00001a;border:1px solid rgba(255,0,0,.2);color:#f44;padding:12px;border-radius:4px;margin-bottom:16px}.success-message{background-color:#00ff001a;border:1px solid rgba(0,255,0,.2);color:#4caf50;padding:12px;border-radius:4px;margin-bottom:16px}.loading{text-align:center;color:#fff9;padding:20px}.empty-state{text-align:center;color:#fff9;padding:40px;background:#ffffff0d;border-radius:8px}.wallet-adapter-button{height:40px!important;padding:0 16px!important;border-radius:12px!important;background-color:#4e44ce!important;transition:all .2s ease!important}.wallet-adapter-button:hover{background-color:#5a50d8!important}@media (max-width: 768px){.navbar-content{padding:0 1rem}.navigation-tabs{flex-wrap:wrap}.nav-tab{flex:1 1 calc(50% - .5rem)}.pool-list-container{padding:10px}}*/.app-container{min-height:100vh;background:#1c1c28;color:#fff;position:relative;overflow-x:hidden;padding-top:72px}.app-nav{width:100%;height:72px;background:#ffffff0d;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid rgba(255,255,255,.1);position:fixed;top:0;left:0;z-index:100}.nav-content{max-width:1200px;margin:0 auto;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center}.nav-left{display:flex;align-items:center}.app-title{font-size:1.5rem;font-weight:600;background:linear-gradient(45deg,#7a4ff3,#9b6fff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin:0}.network-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:12px;color:#fff;padding:.5rem 2rem .5rem 1rem;font-size:.9rem;cursor:pointer;transition:all .2s ease;min-width:140px;position:relative;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .7rem center}.network-select:hover{background-color:#ffffff1a}.network-select option{background:#1c1c28;color:#fff;padding:8px}.wallet-button{background:#7a4ff3!important;border-radius:12px!important;padding:.5rem 1.5rem!important;height:auto!important;transition:all .2s ease!important}.wallet-button:hover{background:#8a5ff3!important;opacity:.9}.app-main{padding-top:72px;min-height:calc(100vh - 72px);width:100%}.connect-wallet{display:flex;justify-content:center;align-items:center;min-height:calc(100vh - 72px)}.connect-card{background:#ffffff0d;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1);border-radius:24px;padding:3rem;text-align:center;max-width:400px;width:100%}.connect-icon{font-size:3rem;margin-bottom:1rem;display:block}.connect-card h2{margin:1rem 0;font-size:1.5rem;color:#fff}.connect-card p{color:#fff9;margin:0}@media (max-width: 768px){.nav-content{padding:1rem}.nav-right{gap:.5rem}.network-select{padding:.5rem 1.5rem .5rem .75rem}.wallet-button{padding:.5rem 1rem!important}.connect-card{padding:2rem 1rem;margin:1rem}} diff --git a/assets/index-CseOP2GB.js b/assets/index-CseOP2GB.js deleted file mode 100644 index 3c84789..0000000 --- a/assets/index-CseOP2GB.js +++ /dev/null @@ -1 +0,0 @@ -import{A as R,P as C,a as p,S as T,u as I,b as P,r as k,j as e,B as f,i as _,C as J,T as L,c as E,d as Q,g as B,e as D,f as ne,h as H,k as Y,l as Z,m as ee,n as ae,o as xe,p as ve,W as Ae,q as je,s as Ne,t as Pe,R as Se}from"./vendor-C_X21sW7.js";(function(){const s=document.createElement("link").relList;if(s&&s.supports&&s.supports("modulepreload"))return;for(const t of document.querySelectorAll('link[rel="modulepreload"]'))i(t);new MutationObserver(t=>{for(const n of t)if(n.type==="childList")for(const r of n.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&i(r)}).observe(document,{childList:!0,subtree:!0});function a(t){const n={};return t.integrity&&(n.integrity=t.integrity),t.referrerPolicy&&(n.referrerPolicy=t.referrerPolicy),t.crossOrigin==="use-credentials"?n.credentials="include":t.crossOrigin==="anonymous"?n.credentials="omit":n.credentials="same-origin",n}function i(t){if(t.ep)return;t.ep=!0;const n=a(t);fetch(t.href,n)}})();const Be="BmzRwgDaqP6cSLoA2u2A7NysVF8nbbw8xRomRUc3DTt2",Te={name:"fall",version:"0.1.0",spec:"0.1.0",description:"Created with Anchor"},Le=[{name:"borrow",discriminator:[228,253,131,202,207,116,89,18],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"lending_pool_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[100]}]}},{name:"lending_pool_token_a",writable:!0,pda:{seeds:[{kind:"account",path:"lending_pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"pool.mint_a",account:"Pool"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrow_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[102]}]}},{name:"collateral_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[104]}]}},{name:"borrower_borrow_block_height_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[106]}]}},{name:"borrower",signer:!0},{name:"borrower_token_a",writable:!0,pda:{seeds:[{kind:"account",path:"borrower"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"pool.mint_a",account:"Pool"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_token_b",writable:!0,pda:{seeds:[{kind:"account",path:"borrower"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"pool.mint_b",account:"Pool"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"account",path:"borrower"},{kind:"const",value:[103]}]}},{name:"borrower_borrow_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"borrower_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"borrow_receipt_token_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_collateral_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"borrower_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"collateral_receipt_token_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_borrow_block_height_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"borrower_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"borrower_borrow_block_height_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",writable:!0,signer:!0},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"borrow_amount",type:"u64"}]},{name:"create_amm",discriminator:[242,91,21,170,5,68,125,64],accounts:[{name:"amm",writable:!0,pda:{seeds:[{kind:"arg",path:"id"}]}},{name:"admin"},{name:"payer",writable:!0,signer:!0},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"id",type:"pubkey"}]},{name:"create_pool",discriminator:[233,146,209,142,207,104,64,188],accounts:[{name:"amm",pda:{seeds:[{kind:"account",path:"amm.id",account:"Amm"}]}},{name:"mint_a"},{name:"mint_b"},{name:"pool",writable:!0,pda:{seeds:[{kind:"account",path:"amm"},{kind:"account",path:"mint_a"},{kind:"account",path:"mint_b"}]}},{name:"pool_authority",pda:{seeds:[{kind:"account",path:"amm"},{kind:"account",path:"mint_a"},{kind:"account",path:"mint_b"},{kind:"const",value:[97]}]}},{name:"pool_account_a",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"pool_account_b",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",writable:!0,signer:!0},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"fee",type:"u16"}]},{name:"deposit_collateral",discriminator:[156,131,142,116,146,247,162,120],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"lending_pool_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[100]}]}},{name:"lending_pool_token_b",writable:!0,pda:{seeds:[{kind:"account",path:"lending_pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"pool.mint_b",account:"Pool"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"collateral_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[104]}]}},{name:"borrower_borrow_block_height_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[106]}]}},{name:"borrower",signer:!0},{name:"borrower_token_b",writable:!0,pda:{seeds:[{kind:"account",path:"borrower"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"pool.mint_b",account:"Pool"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"account",path:"borrower"},{kind:"const",value:[103]}]}},{name:"borrower_collateral_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"borrower_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"collateral_receipt_token_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_borrow_block_height_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"borrower_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"borrower_borrow_block_height_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",writable:!0,signer:!0},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"amount",type:"u64"}]},{name:"deposit_liquidity",discriminator:[245,99,59,25,151,71,233,249],accounts:[{name:"pool",writable:!0,pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"pool_authority",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"mint_a"},{kind:"account",path:"mint_b"},{kind:"const",value:[97]}]}},{name:"mint_a",relations:["pool"]},{name:"mint_b",relations:["pool"]},{name:"depositor",docs:["The account paying for all rents"],signer:!0},{name:"liquidity_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[98]}]}},{name:"pool_account_a",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"pool_account_b",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"depositor_account_liquidity",writable:!0,pda:{seeds:[{kind:"account",path:"depositor"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"liquidity_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"depositor_account_a",writable:!0,pda:{seeds:[{kind:"account",path:"depositor"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"depositor_account_b",writable:!0,pda:{seeds:[{kind:"account",path:"depositor"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",docs:["The account paying for all rents"],writable:!0,signer:!0},{name:"token_program",docs:["Solana ecosystem accounts"],address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"amount_a",type:"u64"},{name:"amount_b",type:"u64"}]},{name:"init_lending_pool_1",discriminator:[111,87,89,249,229,194,59,237],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"mint_a"},{name:"mint_b"},{name:"lending_pool_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[100]}]}},{name:"lending_pool_token_a",writable:!0,pda:{seeds:[{kind:"account",path:"lending_pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lending_pool_token_b",writable:!0,pda:{seeds:[{kind:"account",path:"lending_pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",writable:!0,signer:!0},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[]},{name:"init_lending_pool_2",discriminator:[70,160,247,111,154,255,24,219],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"lending_pool_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[100]}]}},{name:"lending_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[101]}]}},{name:"borrow_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[102]}]}},{name:"collateral_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[104]}]}},{name:"payer",writable:!0,signer:!0},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[]},{name:"init_lending_pool_3",discriminator:[226,110,186,213,63,178,83,62],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"lending_pool_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[100]}]}},{name:"lender_lending_block_height_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[105]}]}},{name:"borrower_borrow_block_height_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[106]}]}},{name:"payer",writable:!0,signer:!0},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[]},{name:"lend",discriminator:[89,34,75,168,122,47,185,45],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"lending_pool_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[100]}]}},{name:"lending_pool_token_a",writable:!0,pda:{seeds:[{kind:"account",path:"lending_pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"pool.mint_a",account:"Pool"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lending_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[101]}]}},{name:"lender_lending_block_height_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[105]}]}},{name:"lender",signer:!0},{name:"lender_token_a",writable:!0,pda:{seeds:[{kind:"account",path:"lender"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"pool.mint_a",account:"Pool"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lender_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"account",path:"lender"},{kind:"const",value:[103]}]}},{name:"lender_lend_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"lender_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"lending_receipt_token_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lender_lending_block_height_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"lender_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"lender_lending_block_height_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",docs:["The account paying for all rents"],writable:!0,signer:!0},{name:"token_program",docs:["Solana ecosystem accounts"],address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"user_lending_amount",type:"u64"}]},{name:"liquidate",discriminator:[223,179,226,125,48,46,39,74],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"pool_authority",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"mint_a"},{kind:"account",path:"mint_b"},{kind:"const",value:[97]}]}},{name:"mint_a",relations:["pool"]},{name:"mint_b",relations:["pool"]},{name:"pool_account_a",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"pool_account_b",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lending_pool_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[100]}]}},{name:"borrow_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[102]}]}},{name:"collateral_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[104]}]}},{name:"trader",signer:!0},{name:"trader_account_b",writable:!0,pda:{seeds:[{kind:"account",path:"trader"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower"},{name:"borrower_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"account",path:"borrower"},{kind:"const",value:[103]}]}},{name:"borrower_borrow_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"borrower_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"borrow_receipt_token_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_collateral_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"borrower_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"collateral_receipt_token_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",writable:!0,signer:!0},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[]},{name:"price",discriminator:[129,85,239,229,61,225,218,20],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"pool_authority",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"mint_a"},{kind:"account",path:"mint_b"},{kind:"const",value:[97]}]}},{name:"mint_a",relations:["pool"]},{name:"mint_b",relations:["pool"]},{name:"pool_account_a",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"pool_account_b",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"token_program",docs:["Solana ecosystem accounts"],address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[],returns:{defined:{name:"PriceResult"}}},{name:"redeem",discriminator:[184,12,86,149,70,196,97,225],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"pool_authority",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"},{kind:"const",value:[97]}]}},{name:"mint_a"},{name:"mint_b"},{name:"lending_pool_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[100]}]}},{name:"lending_pool_token_a",writable:!0,pda:{seeds:[{kind:"account",path:"lending_pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"pool.mint_a",account:"Pool"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lending_pool_token_b",writable:!0,pda:{seeds:[{kind:"account",path:"lending_pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lending_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[101]}]}},{name:"borrow_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[102]}]}},{name:"lender_lending_block_height_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[105]}]}},{name:"lender",signer:!0},{name:"lender_token_a",writable:!0,pda:{seeds:[{kind:"account",path:"lender"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lender_token_b",writable:!0,pda:{seeds:[{kind:"account",path:"lender"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lender_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"account",path:"lender"},{kind:"const",value:[103]}]}},{name:"lender_lending_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"lender_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"lending_receipt_token_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lender_lending_block_height_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"lender_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"lender_lending_block_height_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",writable:!0,signer:!0},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[]},{name:"repay",discriminator:[234,103,67,82,208,234,219,166],accounts:[{name:"mint_a"},{name:"mint_b"},{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"pool_authority",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"mint_a"},{kind:"account",path:"mint_b"},{kind:"const",value:[97]}]}},{name:"lending_pool_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[100]}]}},{name:"lending_pool_token_a",writable:!0,pda:{seeds:[{kind:"account",path:"lending_pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lending_pool_token_b",writable:!0,pda:{seeds:[{kind:"account",path:"lending_pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrow_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[102]}]}},{name:"collateral_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[104]}]}},{name:"borrower_borrow_block_height_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[106]}]}},{name:"borrower",signer:!0},{name:"borrower_token_a",writable:!0,pda:{seeds:[{kind:"account",path:"borrower"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_token_b",writable:!0,pda:{seeds:[{kind:"account",path:"borrower"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"account",path:"borrower"},{kind:"const",value:[103]}]}},{name:"borrower_borrow_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"borrower_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"borrow_receipt_token_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_collateral_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"borrower_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"collateral_receipt_token_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_borrow_block_height_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"borrower_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"borrower_borrow_block_height_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",writable:!0,signer:!0},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[]},{name:"swap_exact_tokens_for_tokens",discriminator:[249,86,253,50,177,221,73,162],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"pool_authority",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"mint_a"},{kind:"account",path:"mint_b"},{kind:"const",value:[97]}]}},{name:"mint_a",relations:["pool"]},{name:"mint_b",relations:["pool"]},{name:"pool_account_a",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"pool_account_b",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"trader",signer:!0},{name:"trader_account_a",writable:!0,pda:{seeds:[{kind:"account",path:"trader"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"trader_account_b",writable:!0,pda:{seeds:[{kind:"account",path:"trader"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",writable:!0,signer:!0},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"swap_a",type:"bool"},{name:"input_amount",type:"u64"},{name:"min_output_amount",type:"u64"}]},{name:"withdraw_liquidity",discriminator:[149,158,33,185,47,243,253,31],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"pool_authority",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"mint_a"},{kind:"account",path:"mint_b"},{kind:"const",value:[97]}]}},{name:"depositor",signer:!0},{name:"liquidity_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[98]}]}},{name:"mint_a",writable:!0,relations:["pool"]},{name:"mint_b",writable:!0,relations:["pool"]},{name:"pool_account_a",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"pool_account_b",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"depositor_account_liquidity",writable:!0,pda:{seeds:[{kind:"account",path:"depositor"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"liquidity_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"depositor_account_a",writable:!0,pda:{seeds:[{kind:"account",path:"depositor"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"depositor_account_b",writable:!0,pda:{seeds:[{kind:"account",path:"depositor"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",docs:["The account paying for all rents"],writable:!0,signer:!0},{name:"token_program",docs:["Solana ecosystem accounts"],address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"amount",type:"u64"}]}],Ee=[{name:"Amm",discriminator:[143,245,200,17,74,214,196,135]},{name:"Pool",discriminator:[241,154,109,4,17,177,109,188]}],Ie=[{code:6e3,name:"CalculationError",msg:"Calculation error"},{code:6001,name:"CalculationError1",msg:"Calculation error"},{code:6002,name:"InvalidFee",msg:"Invalid fee"}],Re=[{name:"Amm",type:{kind:"struct",fields:[{name:"id",docs:["The primary key of the AMM"],type:"pubkey"},{name:"admin",docs:["Account that has admin authority over the AMM"],type:"pubkey"}]}},{name:"Pool",type:{kind:"struct",fields:[{name:"amm",docs:["Primary key of the AMM"],type:"pubkey"},{name:"mint_a",docs:["Mint of token A"],type:"pubkey"},{name:"mint_b",docs:["Mint of token B"],type:"pubkey"},{name:"fee",docs:["The LP fee taken on each trade, in basis points"],type:"u16"},{name:"token_a_amount",docs:["借贷池中token a的数量"],type:"u64"},{name:"token_b_amount",docs:["借贷池中token b的数量"],type:"u64"},{name:"min_collateral_ratio",docs:["最小抵押率 (基点表示,20000 = 200%)"],type:"u64"},{name:"borrow_interest_accumulator_block_height",docs:["记录上次借贷池interest_step更新时的区块高度"],type:"u64"},{name:"borrow_interest_accumulator",docs:["借款累计利息,随着区块高度增加而增加,但是增加幅度与资金借出量正相关"],type:"u64"},{name:"share_lending_block_height",docs:["共享借贷累加器区块高度"],type:"u64"},{name:"share_lending_accumulator",docs:["共享借贷累加器,资金借出量的时间积分"],type:"u64"}]}},{name:"PriceResult",type:{kind:"struct",fields:[{name:"token_a_amount",type:"u64"},{name:"token_b_amount",type:"u64"}]}}],Ce=[{name:"AUTHORITY_SEED",type:"bytes",value:"[97]"},{name:"BASE_RATE",type:"u64",value:"10000"},{name:"BORROWER_AUTHORITY_SEED",type:"bytes",value:"[103]"},{name:"BORROWER_BORROW_BLOCK_HEIGHT_TOKEN_SEED",type:"bytes",value:"[106]"},{name:"BORROW_TOKEN_SEED",type:"bytes",value:"[102]"},{name:"COLLATERAL_TOKEN_SEED",type:"bytes",value:"[104]"},{name:"LENDER_LENDING_BLOCK_HEIGHT_TOKEN_SEED",type:"bytes",value:"[105]"},{name:"LENDING_AUTHORITY_SEED",type:"bytes",value:"[100]"},{name:"LENDING_TOKEN_SEED",type:"bytes",value:"[101]"},{name:"LIQUIDITY_SEED",type:"bytes",value:"[98]"},{name:"MINIMUM_LIQUIDITY",type:"u64",value:"100"},{name:"MIN_COLLATERAL_RATIO_BASE",type:"u64",value:"10000"}],j={address:Be,metadata:Te,instructions:Le,accounts:Ee,errors:Ie,types:Re,constants:Ce};async function De(o,s,a){try{const i=new R(s,o,{preflightCommitment:"confirmed"}),t=new C(j,i),[n]=p.findProgramAddressSync([a.toBuffer()],t.programId);return await t.methods.createAmm(a).accounts({amm:n,admin:i.wallet.publicKey,payer:i.wallet.publicKey,systemProgram:T.programId}).rpc()}catch(i){throw console.error("Error details:",i),i}}const Me=()=>{const o=I(),{connection:s}=P(),[a,i]=k.useState(""),[t,n]=k.useState("500"),[r,m]=k.useState(!1),[l,g]=k.useState(""),u=async c=>{if(c.preventDefault(),i(""),m(!0),!o){i("Please connect your wallet first"),m(!1);return}const d=Number(t);if(d<1||d>1e4){i("Fee must be between 1 and 10000"),m(!1);return}try{const h=p.unique(),b=await De(o,s,h);console.log(`Transaction URL: https://explorer.solana.com/tx/${b}`),g(h.toString()),n("500")}catch(h){console.error("Error creating AMM:",h),i(h instanceof Error?h.message:"Failed to create AMM. Please try again.")}finally{m(!1)}};return e.jsxs("div",{className:"create-amm-container",children:[a&&e.jsx("div",{className:"error-message",children:a}),l&&e.jsxs("div",{className:"success-message",children:["AMM created successfully! ID: ",l]}),e.jsx("form",{onSubmit:u,className:"form",children:e.jsx("button",{type:"submit",className:"submit-button",disabled:r||!o,children:r?"Creating...":"Create AMM"})})]})},Fe=async(o,s)=>{console.log("Getting AMM accounts connection:",s);const a=new R(s,o,{preflightCommitment:"confirmed"}),t=await new C(j,a).account.amm.all();for(const n of t)console.log("AMM Account Details:",{publicKey:n.publicKey.toString(),id:n.account.id.toString(),admin:n.account.admin.toString()});return t.map(n=>({pubkey:n.publicKey.toString(),ammid:n.account.id.toString()}))},me=k.createContext(void 0),qe=({children:o})=>{const[s,a]=k.useState(null);return e.jsx(me.Provider,{value:{amm:s,setAmm:a},children:o})},ie=()=>{const o=k.useContext(me);if(!o)throw new Error("useAmm must be used within an AmmProvider");return o},Ke=()=>{const o=I(),{connection:s}=P(),[a,i]=k.useState([]),[t,n]=k.useState(!1),[r,m]=k.useState(""),{setAmm:l}=ie(),g=async()=>{if(o){n(!0);try{const c=await Fe(o,s);i(c),c.length>0&&l(c[0])}catch(c){console.error("Error fetching AMMs:",c),m(c instanceof Error?c.message:"Failed to fetch AMMs")}finally{n(!1)}}};k.useEffect(()=>{g()},[o,s]);const u=c=>{l(c)};return e.jsxs("div",{className:"create-amm-container",children:[e.jsx("h2",{children:"Existing AMMs"}),r&&e.jsx("div",{className:"error-message",children:r}),t?e.jsx("div",{children:"Loading AMMs..."}):a.length===0?e.jsx("div",{className:"form-group",children:e.jsx("p",{children:"No AMMs found"})}):e.jsx("div",{className:"form-group",children:a.map(c=>e.jsxs("div",{className:"amm-item",onClick:()=>u(c),children:[e.jsxs("div",{className:"amm-details",children:[e.jsx("span",{className:"amm-label",children:"AMM Pubkey:"}),e.jsx("span",{className:"amm-value",children:c.pubkey})]}),e.jsxs("div",{className:"amm-details",children:[e.jsx("span",{className:"amm-label",children:"AMM ID:"}),e.jsxs("span",{className:"amm-value",children:[c.ammid," bps"]})]})]},c.pubkey))})]})};var de;const Oe=(de=j.constants.find(o=>o.name==="BASE_RATE"))==null?void 0:de.value,M="a",ue="b",F="d",$="e",q="f",U="g",O="h",oe="i",z="j";async function We(o,s,a,i,t,n){try{console.log("Step 1: Creating provider");const r=new R(s,o,{commitment:"confirmed",preflightCommitment:"confirmed"}),m=new C(j,r),[l]=p.findProgramAddressSync([a.toBuffer(),i.toBuffer(),t.toBuffer()],m.programId),[g]=p.findProgramAddressSync([a.toBuffer(),i.toBuffer(),t.toBuffer(),f.from(M)],m.programId),[u]=p.findProgramAddressSync([a.toBuffer(),i.toBuffer(),t.toBuffer(),f.from(ue)],m.programId),c=await _.token.associatedAddress({mint:i,owner:g}),d=await _.token.associatedAddress({mint:t,owner:g}),[h]=p.findProgramAddressSync([l.toBuffer(),f.from(F)],m.programId),[b]=p.findProgramAddressSync([l.toBuffer(),f.from($)],m.programId),[w]=p.findProgramAddressSync([l.toBuffer(),f.from(q)],m.programId),[y]=p.findProgramAddressSync([l.toBuffer(),f.from(O)],m.programId),x=await _.token.associatedAddress({mint:i,owner:h}),v=await _.token.associatedAddress({mint:t,owner:h}),[A]=p.findProgramAddressSync([l.toBuffer(),f.from(oe)],m.programId),[N]=p.findProgramAddressSync([l.toBuffer(),f.from(z)],m.programId),S=J.setComputeUnitLimit({units:1e6});console.log("Step 1: Creating pool...");let K="";await X(s,l)?console.log("Pool already exists, skipping..."):(K=await m.methods.createPool(n).accounts({amm:a,mintA:i,mintB:t,pool:l,poolAuthority:g,mintLiquidity:u,poolAccountA:c,poolAccountB:d,payer:r.wallet.publicKey,tokenProgram:L,associatedTokenProgram:E,systemProgram:T.programId}).preInstructions([S]).rpc({commitment:"confirmed"}),await s.confirmTransaction(K,"confirmed"),console.log("Transaction signature:",K)),console.log("Step 2: Initializing lending pool...");let W="";await X(s,x)?console.log("Lending pool 1 already initialized, skipping..."):(W=await m.methods.initLendingPool1().accounts({pool:l,mintA:i,mintB:t,lendingPoolAuthority:h,lendingPoolTokenA:x,lendingPoolTokenB:v,payer:r.wallet.publicKey,tokenProgram:L,associatedTokenProgram:E,systemProgram:T.programId,rent:Q}).rpc(),await s.confirmTransaction(W,"confirmed")),console.log("Step 3: Initializing lending pool...");let G="";await X(s,b)?console.log("Lending pool 2 already initialized, skipping..."):(G=await m.methods.initLendingPool2().accounts({pool:l,lendingPoolAuthority:h,lendingReceiptTokenMint:b,borrowReceiptTokenMint:w,collateralReceiptTokenMint:y,payer:r.wallet.publicKey,tokenProgram:L,associatedTokenProgram:E,systemProgram:T.programId,rent:Q}).rpc(),await s.confirmTransaction(G,"confirmed")),console.log("Step 4: Initializing lending pool...");let V="";return await X(s,A)?console.log("Lending pool 3 already initialized, skipping..."):(V=await m.methods.initLendingPool3().accounts({pool:l,lendingPoolAuthority:h,lenderLendingBlockHeightMint:A,borrowerBorrowBlockHeightMint:N,payer:r.wallet.publicKey,tokenProgram:L,associatedTokenProgram:E,systemProgram:T.programId,rent:Q}).rpc(),await s.confirmTransaction(V,"confirmed")),{tx:K,initTx1:W,initTx2:G,initTx3:V}}catch(r){console.error("Error",r)}return{tx:"",initTx1:"",initTx2:"",initTx3:""}}async function X(o,s){return await o.getAccountInfo(s)!==null}const Ge=()=>{const o=I(),{connection:s}=P(),{amm:a}=ie(),[i,t]=k.useState(""),[n,r]=k.useState(!1),[m,l]=k.useState(""),[g,u]=k.useState({mintA:"",mintB:"",fee:"500"}),c=async d=>{if(d.preventDefault(),t(""),l(""),r(!0),!o){t("Please connect your wallet first"),r(!1);return}if(!a){t("Please select an AMM first"),r(!1);return}try{const h=new p(a.pubkey),b=new p(g.mintA),w=new p(g.mintB),y=await We(o,s,h,b,w,Number(g.fee));console.log(`Transaction URL: https://explorer.solana.com/tx/${y}`),l(y.toString()),u({mintA:"",mintB:"",fee:"500"})}catch(h){console.error("Error creating pool:",h),t(h instanceof Error?h.message:"Failed to create pool")}finally{r(!1)}};return e.jsx("div",{children:e.jsxs("div",{className:"create-amm-container",children:[e.jsx("h2",{children:"Create Pool"}),i&&e.jsx("div",{className:"error-message",children:i}),m&&e.jsxs("div",{className:"success-message",children:["Pool created successfully!",e.jsx("a",{href:`https://explorer.solana.com/tx/${m}`,target:"_blank",rel:"noopener noreferrer",children:"View transaction"})]}),e.jsxs("form",{onSubmit:c,className:"form",children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"AMM Pubkey:"}),e.jsx("input",{type:"text",value:a?a.pubkey:"",readOnly:!0,disabled:!0})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Token A Mint Address:"}),e.jsx("input",{type:"text",value:g.mintA,onChange:d=>u({...g,mintA:d.target.value}),placeholder:"Enter token A mint address",required:!0,disabled:n})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Token B Mint Address:"}),e.jsx("input",{type:"text",value:g.mintB,onChange:d=>u({...g,mintB:d.target.value}),placeholder:"Enter token B mint address",required:!0,disabled:n})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Fee (in basis points, 1-10000, default: 500 or 5%):"}),e.jsx("input",{type:"text",value:g.fee,onChange:d=>u({...g,fee:d.target.value}),placeholder:"500",required:!0,disabled:n})]}),e.jsx("button",{type:"submit",className:"submit-button",disabled:n||!o,children:n?"Creating...":"Create Pool"})]})]})})};async function ce(o,s){try{const a=new R(s,o,{preflightCommitment:"confirmed"});return(await new C(j,a).account.pool.all()).map(n=>({pubkey:n.publicKey.toString(),amm:n.account.amm.toString(),mintA:n.account.mintA.toString(),mintB:n.account.mintB.toString(),fee:n.account.fee.toString(),minCollateralRatio:n.account.minCollateralRatio.toString(),tokenAAmount:n.account.tokenAAmount.toString(),tokenBAmount:n.account.tokenBAmount.toString()}))}catch(a){throw console.error("Error fetching pool accounts:",a),a}}async function te(o,s,a){try{const i=new p(s.pubkey),t=new p(s.mintA),n=new p(s.mintB),[r]=p.findProgramAddressSync([new p(s.amm).toBuffer(),new p(s.mintA).toBuffer(),new p(s.mintB).toBuffer(),f.from(M)],new p(j.address)),m=await B(new p(s.mintA),r,!0),l=await B(new p(s.mintB),r,!0),[g]=p.findProgramAddressSync([i.toBuffer(),a.toBuffer(),f.from(U)],new p(j.address)),u=await D(o,m),c=await D(o,l),d=Number(u.amount),h=Number(c.amount),b=h/d,w=d/h,[y]=p.findProgramAddressSync([i.toBuffer(),f.from(F)],new p(j.address)),[x]=p.findProgramAddressSync([i.toBuffer(),f.from($)],new p(j.address)),[v]=p.findProgramAddressSync([i.toBuffer(),f.from(q)],new p(j.address)),[A]=p.findProgramAddressSync([i.toBuffer(),f.from(O)],new p(j.address)),N=await B(t,y,!0),S=await B(n,y,!0),K=await D(o,N),W=await D(o,S),G=await ne(o,x),V=await ne(o,v),ge=await ne(o,A);console.log("walletPublicKey",a);const he=await H(t,a,!0),ke=await B(n,a,!0),fe=await D(o,he),be=await D(o,ke),we=await re(o,g,x),ye=await re(o,g,v),_e=await re(o,g,A);return{pool:{aToB:b,bToA:w,tokenAAmount:d,tokenBAmount:h},lendingPool:{tokenAAmount:Number(K.amount),tokenBAmount:Number(W.amount),lendingReceiptSupply:Number(G.supply),borrowReceiptSupply:Number(V.supply),collateralReceiptSupply:Number(ge.supply),addresses:{lendingReceipt:x.toString(),borrowReceipt:v.toString(),collateralReceipt:A.toString()}},userAssets:{tokenAAmount:fe.amount.toString(),tokenBAmount:be.amount.toString(),lendingReceiptAmount:we.toString(),borrowReceiptAmount:ye.toString(),collateralReceiptAmount:_e.toString()}}}catch(i){throw console.error("Error getting lending pool details:",i),i}}async function re(o,s,a){try{const i=await B(a,s,!0),t=await D(o,i);return Number(t.amount)}catch(i){return console.log("getUserTokenAmount",i),0}}async function He(o,s,a,i,t,n,r,m,l){try{const g=new R(s,o,{preflightCommitment:"confirmed"}),u=new C(j,g),[c]=p.findProgramAddressSync([i.toBuffer(),t.toBuffer(),n.toBuffer(),f.from(M)],u.programId),d=await B(t,c,!0),h=await B(n,c,!0),b=await B(t,o.publicKey,!0),w=await B(n,o.publicKey,!0);return await u.methods.swapExactTokensForTokens(r,new Y.BN(m),new Y.BN(l)).accounts({amm:i,pool:a,poolAuthority:c,trader:o.publicKey,mintA:t,mintB:n,poolAccountA:d,poolAccountB:h,traderAccountA:b,traderAccountB:w,payer:o.publicKey,tokenProgram:L,associatedTokenProgram:E,systemProgram:T.programId}).rpc()}catch(g){throw console.error("Error in swap:",g),g}}const Ue=({pool:o,onSuccess:s})=>{const a=I(),{connection:i}=P(),[t,n]=k.useState(!1),[r,m]=k.useState(""),[l,g]=k.useState(!0),[u,c]=k.useState({inputAmount:"",minOutputAmount:""}),d=async h=>{h.preventDefault(),m(""),n(!0);try{const b=parseFloat(u.inputAmount),w=parseFloat(u.minOutputAmount),y=await He(a,i,new p(o.pubkey),new p(o.amm),new p(o.mintA),new p(o.mintB),l,b,w);s(y),c({inputAmount:"",minOutputAmount:""})}catch(b){console.error("Error in swap:",b),m(b instanceof Error?b.message:"Failed to swap")}finally{n(!1)}};return e.jsxs("form",{onSubmit:d,className:"swap-form",children:[r&&e.jsx("div",{className:"error-message",children:r}),e.jsx("div",{className:"form-group",children:e.jsxs("div",{className:"swap-direction",children:[e.jsx("button",{type:"button",className:`direction-button ${l?"active":""}`,onClick:()=>g(!0),children:"A → B"}),e.jsx("button",{type:"button",className:`direction-button ${l?"":"active"}`,onClick:()=>g(!1),children:"B → A"})]})}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Input Amount:"}),e.jsx("input",{type:"number",step:"any",value:u.inputAmount,onChange:h=>c({...u,inputAmount:h.target.value}),placeholder:`Enter amount for token ${l?"A":"B"}`,required:!0,disabled:t})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Minimum Output Amount:"}),e.jsx("input",{type:"number",step:"any",value:u.minOutputAmount,onChange:h=>c({...u,minOutputAmount:h.target.value}),placeholder:`Minimum amount of token ${l?"B":"A"}`,required:!0,disabled:t})]}),e.jsx("button",{type:"submit",className:"submit-button",disabled:t||!a,children:t?"Swapping...":"Swap"})]})};async function Ve(o,s,a,i,t,n,r,m){try{const l=new R(s,o,{preflightCommitment:"confirmed"}),g=new C(j,l),[u]=p.findProgramAddressSync([i.toBuffer(),t.toBuffer(),n.toBuffer(),f.from(M)],g.programId),[c]=p.findProgramAddressSync([a.toBuffer(),f.from(ue)],g.programId),d=await B(t,u,!0),h=await B(n,u,!0),b=await B(t,o.publicKey,!0),w=await B(n,o.publicKey,!0),y=await B(c,o.publicKey,!0);return await g.methods.depositLiquidity(new Y.BN(r),new Y.BN(m)).accounts({pool:a,poolAuthority:u,mintA:t,mintB:n,depositor:o.publicKey,mintLiquidity:c,poolAccountA:d,poolAccountB:h,depositorAccountLiquidity:y,depositorAccountA:b,depositorAccountB:w,payer:o.publicKey,tokenProgram:L,associatedTokenProgram:E,systemProgram:T.programId}).rpc({skipPreflight:!1,maxRetries:3,commitment:"confirmed"})}catch(l){throw console.error("Error in depositLiquidity:",l),l}}const Qe=({pool:o,onSuccess:s})=>{const a=I(),{connection:i}=P(),[t,n]=k.useState(!1),[r,m]=k.useState(""),[l,g]=k.useState({amountA:"",amountB:""}),u=async c=>{c.preventDefault(),m(""),n(!0);try{const d=parseFloat(l.amountA),h=parseFloat(l.amountB),b=await Ve(a,i,new p(o.pubkey),new p(o.amm),new p(o.mintA),new p(o.mintB),d,h);s(b),g({amountA:"",amountB:""})}catch(d){console.error("Error depositing liquidity:",d),m(d instanceof Error?d.message:"Failed to deposit liquidity")}finally{n(!1)}};return e.jsxs("form",{onSubmit:u,className:"deposit-form",children:[r&&e.jsx("div",{className:"error-message",children:r}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Amount Token A:"}),e.jsx("input",{type:"number",step:"any",value:l.amountA,onChange:c=>g({...l,amountA:c.target.value}),placeholder:"Enter amount for token A",required:!0,disabled:t})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Amount Token B:"}),e.jsx("input",{type:"number",step:"any",value:l.amountB,onChange:c=>g({...l,amountB:c.target.value}),placeholder:"Enter amount for token B",required:!0,disabled:t})]}),e.jsx("button",{type:"submit",className:"submit-button",disabled:t||!a,children:t?"Depositing...":"Confirm Deposit"})]})};async function Je(o,s,a,i,t){try{const n=new R(s,o,{commitment:"confirmed",preflightCommitment:"confirmed"}),r=new C(j,n),[m]=p.findProgramAddressSync([a.toBuffer(),f.from(F)],r.programId),[l]=p.findProgramAddressSync([a.toBuffer(),f.from($)],r.programId),[g]=p.findProgramAddressSync([a.toBuffer(),f.from(q)],r.programId),[u]=p.findProgramAddressSync([a.toBuffer(),f.from(O)],r.programId),c=await _.token.associatedAddress({mint:i,owner:m}),d=await _.token.associatedAddress({mint:t,owner:m}),[h]=p.findProgramAddressSync([a.toBuffer(),f.from(oe)],r.programId),[b]=p.findProgramAddressSync([a.toBuffer(),f.from(z)],r.programId),w=J.setComputeUnitLimit({units:1e6});console.log("Step 1: Initializing lending pool...");let y="";await se(s,c)?console.log("Lending pool 1 already initialized, skipping..."):(y=await r.methods.initLendingPool1().accounts({pool:a,mintA:i,mintB:t,lendingPoolAuthority:m,lendingPoolTokenA:c,lendingPoolTokenB:d,payer:n.wallet.publicKey,tokenProgram:L,associatedTokenProgram:E,systemProgram:T.programId,rent:Q}).preInstructions([w]).rpc({commitment:"confirmed"}),await s.confirmTransaction(y,"confirmed")),console.log("Step 2: Initializing lending pool...");let x="";await se(s,u)?console.log("Lending pool 2 already initialized, skipping..."):(x=await r.methods.initLendingPool2().accounts({pool:a,lendingPoolAuthority:m,lendingReceiptTokenMint:l,borrowReceiptTokenMint:g,collateralReceiptTokenMint:u,payer:n.wallet.publicKey,tokenProgram:L,associatedTokenProgram:E,systemProgram:T.programId,rent:Q}).preInstructions([w]).rpc({commitment:"confirmed"}),await s.confirmTransaction(x,"confirmed")),console.log("Step 3: Initializing lending pool...");let v="";return await se(s,h)?console.log("Lending pool 3 already initialized, skipping..."):(v=await r.methods.initLendingPool3().accounts({pool:a,lendingPoolAuthority:m,lenderLendingBlockHeightMint:h,borrowerBorrowBlockHeightMint:b,payer:n.wallet.publicKey,tokenProgram:L,associatedTokenProgram:E,systemProgram:T.programId,rent:Q}).preInstructions([w]).rpc({commitment:"confirmed"}),await s.confirmTransaction(v,"confirmed")),{initTx1:y,initTx2:x,initTx3:v}}catch(n){console.error("Error",n)}return{initTx1:"",initTx2:"",initTx3:""}}async function se(o,s){return await o.getAccountInfo(s)!==null}const Ze=({pool:o,onSuccess:s})=>{const a=I(),{connection:i}=P(),{amm:t}=ie(),[n,r]=k.useState(""),[m,l]=k.useState(!1),g=async()=>{if(r(""),l(!0),!a){r("Please connect your wallet first"),l(!1);return}if(!t){r("Please select an AMM first"),l(!1);return}try{const u=new p(o.pubkey),c=new p(o.mintA),d=new p(o.mintB),h=await Je(a,i,u,c,d);console.log(`Transaction URL: https://explorer.solana.com/tx/${h}`),s&&s(h.toString())}catch(u){console.error("Error initializing pool:",u),r(u instanceof Error?u.message:"Failed to initialize pool")}finally{l(!1)}};return e.jsxs("div",{className:"init-pool-container",children:[n&&e.jsx("div",{className:"error-message",children:n}),e.jsx("button",{onClick:g,className:"submit-button",disabled:m||!a,children:m?"Initializing...":"Initialize Pool"})]})},$e=({pool:o,onTxSuccess:s})=>{const{connection:a}=P(),{publicKey:i}=Z(),[t,n]=k.useState("none"),[r,m]=k.useState(null),[l,g]=k.useState(!1),u=async()=>{try{g(!0);const c=await te(a,{pubkey:o.pubkey.toString(),amm:o.amm.toString(),mintA:o.mintA.toString(),mintB:o.mintB.toString()},i||new p(""));m(c)}catch(c){console.error("Error fetching pool prices:",c)}finally{g(!1)}};return k.useEffect(()=>{u()},[o,a,i]),e.jsxs("div",{className:"pool-item",children:[e.jsx("div",{className:"pool-header",children:e.jsx("h3",{children:"Pool Details"})}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"AMM Pubkey:"}),e.jsx("span",{className:"pool-value",title:o.amm.toString(),children:o.amm.toString()})]}),e.jsxs("div",{className:"pool-info",children:[e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Pool Pubkey:"}),e.jsx("span",{className:"pool-value",title:o.pubkey.toString(),children:o.pubkey.toString()})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Token A mint addr:"}),e.jsx("span",{className:"pool-value",title:o.mintA.toString(),children:o.mintA.toString()})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Token B mint addr:"}),e.jsx("span",{className:"pool-value",title:o.mintB.toString(),children:o.mintB.toString()})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Fee:"}),e.jsx("span",{className:"pool-value",title:o.fee.toString(),children:o.fee})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Min Collateral Ratio:"}),e.jsx("span",{className:"pool-value",title:o.minCollateralRatio.toString(),children:o.minCollateralRatio})]})]}),e.jsx("div",{className:"pool-actions",children:e.jsx("button",{className:"action-button",onClick:()=>n(t==="initPool"?"none":"initPool"),children:t==="initPool"?"Hide Init Pool":"Init Pool"})}),t==="initPool"&&e.jsx("div",{className:"form-container",children:e.jsx(Ze,{pool:o,onSuccess:c=>{s(c),n("none"),u()}})}),e.jsxs("div",{className:"pool-price-info",children:[e.jsx("h4",{children:"Pool Liquidity & Prices"}),l?e.jsx("div",{className:"loading-prices",children:"Loading prices..."}):r?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Token A Reserve:"}),e.jsx("span",{className:"pool-value",children:r.pool.tokenAAmount.toFixed(6)})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Token B Reserve:"}),e.jsx("span",{className:"pool-value",children:r.pool.tokenBAmount.toFixed(6)})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Price (A → B):"}),e.jsxs("span",{className:"pool-value",children:["1 A = ",r.pool.aToB.toFixed(6)," B"]})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Price (B → A):"}),e.jsxs("span",{className:"pool-value",children:["1 B = ",r.pool.bToA.toFixed(6)," A"]})]})]}):e.jsx("div",{className:"error-message",children:"Failed to load prices"})]}),e.jsxs("div",{className:"pool-actions",children:[e.jsx("button",{className:"action-button",onClick:()=>n(t==="deposit"?"none":"deposit"),children:t==="deposit"?"Hide Deposit":"Deposit"}),e.jsx("button",{className:"action-button",onClick:()=>n(t==="swap"?"none":"swap"),children:t==="swap"?"Hide Swap":"Swap"})]}),t==="deposit"&&e.jsx("div",{className:"form-container",children:e.jsx(Qe,{pool:o,onSuccess:c=>{s(c),n("none"),u()}})}),t==="swap"&&e.jsx("div",{className:"form-container",children:e.jsx(Ue,{pool:o,onSuccess:c=>{s(c),n("none"),u()}})})]})},ze=()=>{const o=I(),{connection:s}=P(),[a,i]=k.useState([]),[t,n]=k.useState(!1),[r,m]=k.useState(""),[l,g]=k.useState(""),u=async()=>{if(o){n(!0);try{const d=await ce(o,s);i(d)}catch(d){console.error("Error fetching pools:",d),m(d instanceof Error?d.message:"Failed to fetch pools")}finally{n(!1)}}};k.useEffect(()=>{u()},[o,s]);const c=d=>{g(d),u()};return e.jsxs("div",{className:"pool-list-container",children:[e.jsx("h2",{children:"Liquidity Pools"}),r&&e.jsx("div",{className:"error-message",children:r}),l&&e.jsxs("div",{className:"success-message",children:["Transaction successful!",e.jsx("a",{href:`https://explorer.solana.com/tx/${l}`,target:"_blank",rel:"noopener noreferrer",children:"View on Explorer"})]}),t?e.jsx("div",{className:"loading",children:"Loading pools..."}):a.length===0?e.jsx("div",{className:"empty-state",children:e.jsx("p",{children:"No pools found"})}):e.jsx("div",{className:"pool-list",children:a.map(d=>e.jsx($e,{pool:d,onTxSuccess:c},d.pubkey.toString()))})]})};async function Xe(o,s,a,i){try{console.log("Executing liquidate...");const t=new R(s,o,{preflightCommitment:"confirmed"}),n=new C(j,t),r=await n.account.pool.fetch(a),m=r.mintA,l=r.mintB,[g]=p.findProgramAddressSync([r.amm.toBuffer(),m.toBuffer(),l.toBuffer(),f.from(M)],n.programId),[u]=p.findProgramAddressSync([a.toBuffer(),f.from(F)],n.programId),[c]=p.findProgramAddressSync([a.toBuffer(),f.from(q)],n.programId),[d]=p.findProgramAddressSync([a.toBuffer(),f.from(O)],n.programId),[h]=p.findProgramAddressSync([a.toBuffer(),i.toBuffer(),f.from(U)],n.programId),b=await _.token.associatedAddress({mint:c,owner:h}),w=await _.token.associatedAddress({mint:d,owner:h}),y=H(l,t.wallet.publicKey,!0),x=J.setComputeUnitLimit({units:2e8});console.log("Sending liquidate transaction...");const v=await n.methods.liquidate().accounts({pool:a,poolAuthority:g,mintA:m,mintB:l,lendingPoolAuthority:u,borrowReceiptTokenMint:c,collateralReceiptTokenMint:d,trader:t.wallet.publicKey,traderAccountB:y,borrower:i,borrowerBorrowReceiptToken:b,borrowerCollateralReceiptToken:w,payer:t.wallet.publicKey,tokenProgram:L,associatedTokenProgram:E,systemProgram:T.programId}).preInstructions([x]).rpc();return console.log("Liquidate transaction signature:",v),{tx:v,accounts:{poolKey:a,poolAuthority:g,lendingPoolAuthority:u,borrowReceiptTokenMint:c,collateralReceiptTokenMint:d,traderAccountB:y,borrowerBorrowReceiptToken:b,borrowerCollateralReceiptToken:w}}}catch(t){throw console.error("Error in liquidate:",t),t instanceof Error&&console.error("Error details:",{message:t.message,stack:t.stack}),t}}async function Ye(o,s,a){try{const i=new R(a,o,{preflightCommitment:"confirmed"}),t=new C(j,i),n=await t.account.pool.fetch(s),r=n.mintA,m=n.mintB,g=(await te(a,{pubkey:s.toString(),amm:n.amm.toString(),mintA:r.toString(),mintB:m.toString()},o.publicKey)).pool.aToB,[u]=p.findProgramAddressSync([s.toBuffer(),f.from(q)],t.programId),[c]=p.findProgramAddressSync([s.toBuffer(),f.from(O)],t.programId),d=await a.getTokenLargestAccounts(u),h=[];for(const b of d.value){if(b.amount=="0")continue;const w=await D(a,b.address),y=w.owner,x=await eo(a,y,c);console.log("borrowReceiptToken amount",w.amount.toString()),console.log("collateralReceiptTokenAmount",x),console.log("Number(borrowTokenAccountInfo.amount) * 2*poolPrice",Number(w.amount)*2*g),x{const o=I(),{connection:s}=P(),[a,i]=k.useState(""),[t,n]=k.useState(!1),[r,m]=k.useState(""),[l,g]=k.useState(""),[u,c]=k.useState(""),[d,h]=k.useState([]),[b,w]=k.useState(!1),y=async v=>{if(v.preventDefault(),!o||!r){i("Please connect wallet and enter pool address");return}try{i(""),w(!0);const A=new p(r),N=await Ye(o,A,s);h(N)}catch(A){console.error("Error fetching pending liquidations:",A),i(A instanceof Error?A.message:"Failed to fetch pending liquidations"),h([])}finally{w(!1)}},x=async v=>{if(v.preventDefault(),i(""),n(!0),!o){i("Please connect your wallet first"),n(!1);return}let A,N;try{A=new p(r),N=new p(l)}catch{i("Invalid pool or borrower address"),n(!1);return}try{const S=await Xe(o,s,A,N);console.log(`Transaction URL: https://explorer.solana.com/tx/${S.tx}`),c(S.tx),m(""),g("")}catch(S){console.error("Error liquidating position:",S),i(S instanceof Error?S.message:"Failed to liquidate. Please try again.")}finally{n(!1)}};return e.jsxs("div",{className:"liquidate-container",children:[a&&e.jsx("div",{className:"error-message",children:a}),u&&e.jsxs("div",{className:"success-message",children:["Liquidation successful!",e.jsx("a",{href:`https://explorer.solana.com/tx/${u}`,target:"_blank",rel:"noopener noreferrer",children:"View transaction"})]}),e.jsxs("div",{className:"search-form",children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"pool-address",children:"Pool Address:"}),e.jsxs("div",{className:"input-with-button",children:[e.jsx("input",{id:"pool-address",type:"text",value:r,onChange:v=>m(v.target.value),placeholder:"Enter pool address",className:"input-field"}),e.jsx("button",{onClick:y,disabled:b||!o||!r,className:"search-button",children:b?"Searching...":"Search"})]})]}),e.jsxs("div",{className:"pending-liquidations",children:[e.jsx("h3",{children:"Pending Liquidations"}),b?e.jsx("div",{className:"loading",children:"Loading pending liquidations..."}):d.length===0?e.jsx("p",{children:"No pending liquidations found"}):e.jsx("ul",{className:"liquidation-list",children:d.map((v,A)=>e.jsx("li",{className:"liquidation-item",onClick:()=>g(v.userAuthorityPda.toString()),children:e.jsxs("div",{children:["Borrower Authority PDA: ",v.userAuthorityPda.toString()]})},A))})]})]}),e.jsxs("form",{onSubmit:x,className:"liquidate-form",children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"borrower-address",children:"Note: The current demo does not yet support liquidation based on PDAs. The public key is not the same as the PDA. So the PDA above is useless now. U'd better to use another account to borrow and then liquidate that account with it's Public Key."}),e.jsx("label",{htmlFor:"borrower-address",children:"Borrower Address:"}),e.jsx("input",{id:"borrower-address",type:"text",value:l,onChange:v=>g(v.target.value),placeholder:"Enter borrower address",className:"input-field"})]}),e.jsx("button",{type:"submit",className:"submit-button",disabled:t||!o||!r||!l,children:t?"Liquidating...":"Liquidate Position"})]})]})};async function to(o,s,a,i){try{console.log("Executing lend...");const t=new R(s,o,{preflightCommitment:"confirmed"}),n=new C(j,t),r=await n.account.pool.fetch(a),m=r.mintA,l=r.mintB,[g]=p.findProgramAddressSync([r.amm.toBuffer(),m.toBuffer(),l.toBuffer(),f.from(M)],n.programId),[u]=p.findProgramAddressSync([a.toBuffer(),f.from(F)],n.programId),[c]=p.findProgramAddressSync([a.toBuffer(),f.from($)],n.programId),[d]=p.findProgramAddressSync([a.toBuffer(),f.from(q)],n.programId),[h]=p.findProgramAddressSync([a.toBuffer(),f.from(oe)],n.programId),b=H(m,u,!0),w=H(l,u,!0),y=await _.token.associatedAddress({mint:m,owner:t.wallet.publicKey}),[x]=p.findProgramAddressSync([a.toBuffer(),t.wallet.publicKey.toBuffer(),f.from(U)],n.programId),v=await _.token.associatedAddress({mint:c,owner:x}),A=await _.token.associatedAddress({mint:h,owner:x});return{tx:await n.methods.lend(new ee(i)).accounts({pool:a,lendingPoolAuthority:u,lendingPoolTokenA:b,lendingReceiptTokenMint:c,lenderLendingBlockHeightMint:h,lender:t.wallet.publicKey,lenderTokenA:y,lenderAuthority:x,lenderLendReceiptToken:v,lenderLendingBlockHeightReceiptToken:A,payer:t.wallet.publicKey,tokenProgram:L,associatedTokenProgram:E,systemProgram:T.programId}).rpc(),accounts:{poolAuthority:g,lendingPoolAuthority:u,lendingReceiptTokenMint:c,borrowReceiptTokenMint:d,lendingPoolTokenA:b,lendingPoolTokenB:w,lenderTokenA:y,lenderLendReceiptToken:v,lenderLendingBlockHeightReceiptToken:A}}}catch(t){throw console.error("Error in lend:",t),t instanceof Error&&console.error("Error details:",{message:t.message,stack:t.stack}),t}}const no=({pool:o,onSuccess:s})=>{const a=I(),{connection:i}=P(),[t,n]=k.useState(""),[r,m]=k.useState(!1),[l,g]=k.useState(""),u=async c=>{if(c.preventDefault(),n(""),m(!0),!a){n("Please connect your wallet first"),m(!1);return}try{const d=parseFloat(l);if(isNaN(d)||d<=0)throw new Error("Invalid amount");const h=new p(o.pubkey),b=await to(a,i,h,new ee(d));console.log(`Transaction URL: https://explorer.solana.com/tx/${b.tx}`),g(""),s(b.tx)}catch(d){console.error("Error lending:",d),n(d instanceof Error?d.message:"Failed to lend")}finally{m(!1)}};return console.log(o),e.jsxs("div",{className:"form-wrapper",children:[e.jsx("h3",{children:"Lend Tokens"}),t&&e.jsx("div",{className:"error-message",children:t}),e.jsxs("form",{onSubmit:u,children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Amount to Lend:"}),e.jsx("input",{type:"number",value:l,onChange:c=>g(c.target.value),placeholder:"Enter amount to lend",required:!0,min:"0",step:"any",disabled:r})]}),e.jsxs("div",{className:"lendingPool-info-summary",children:[e.jsxs("div",{children:["Pool: ",o.pubkey.toString()]}),e.jsxs("div",{children:["Token A: ",o.mintA.toString()]}),e.jsxs("div",{children:["Token B: ",o.mintB.toString()]})]}),e.jsx("button",{type:"submit",className:"action-button",disabled:r||!a,children:r?"Processing...":"Confirm Lend"})]})]})};async function ao(o,s,a){try{const i=new R(s,o,{preflightCommitment:"confirmed"}),t=new C(j,i),n=await t.account.pool.fetch(a),r=n.mintA,m=n.mintB,[l]=p.findProgramAddressSync([n.amm.toBuffer(),r.toBuffer(),m.toBuffer(),f.from(M)],t.programId),[g]=p.findProgramAddressSync([a.toBuffer(),f.from(F)],t.programId),u=await _.token.associatedAddress({mint:r,owner:g}),c=await _.token.associatedAddress({mint:m,owner:g}),[d]=p.findProgramAddressSync([a.toBuffer(),f.from($)],t.programId),[h]=p.findProgramAddressSync([a.toBuffer(),f.from(q)],t.programId),[b]=p.findProgramAddressSync([a.toBuffer(),f.from(oe)],t.programId),w=await _.token.associatedAddress({mint:r,owner:i.wallet.publicKey}),y=await _.token.associatedAddress({mint:m,owner:i.wallet.publicKey}),[x]=p.findProgramAddressSync([a.toBuffer(),i.wallet.publicKey.toBuffer(),f.from(U)],t.programId),v=await _.token.associatedAddress({mint:d,owner:x}),A=await _.token.associatedAddress({mint:b,owner:x});console.log("Sending redeem transaction...");const N=await t.methods.redeem().accounts({pool:a,poolAuthority:l,mintA:r,mintB:m,lendingPoolAuthority:g,lendingPoolTokenA:u,lendingPoolTokenB:c,lendingReceiptTokenMint:d,borrowReceiptTokenMint:h,lenderLendingBlockHeightTokenMint:b,lender:i.wallet.publicKey,lenderTokenA:w,lenderTokenB:y,lenderLendingReceiptToken:v,lenderLendingBlockHeightReceiptToken:A,payer:i.wallet.publicKey,tokenProgram:L,associatedTokenProgram:E,systemProgram:T.programId}).rpc();return console.log("Redeem transaction signature:",N),N}catch(i){throw console.error("Error in redeem:",i),i}}const ro=({pool:o,onSuccess:s})=>{const a=I(),{connection:i}=P(),[t,n]=k.useState(""),[r,m]=k.useState(!1),l=async g=>{if(g.preventDefault(),n(""),m(!0),!a){n("Please connect your wallet first"),m(!1);return}try{const u=new p(o.pubkey),c=await ao(a,i,u);console.log(`Transaction URL: https://explorer.solana.com/tx/${c}`),s(c)}catch(u){console.error("Error redeeming:",u),n(u instanceof Error?u.message:"Failed to redeem")}finally{m(!1)}};return e.jsxs("div",{className:"form-wrapper",children:[e.jsx("h3",{children:"Redeem Tokens"}),t&&e.jsx("div",{className:"error-message",children:t}),e.jsxs("form",{onSubmit:l,children:[e.jsxs("div",{className:"lending-pool-info-summary",children:[e.jsxs("div",{children:["Min Collateral Ratio: ",(o.minCollateralRatio/100).toFixed(2),"%"]}),e.jsxs("div",{children:["Base Rate: ",Oe,"%"]})]}),e.jsx("div",{className:"warning-message",children:"Note: This will redeem all your lending receipt tokens."}),e.jsx("button",{type:"submit",className:"action-button",disabled:r||!a,children:r?"Processing...":"Confirm Redeem"})]})]})},so=({pool:o,onTxSuccess:s})=>{const{connection:a}=P(),{publicKey:i}=Z(),[t,n]=k.useState("none"),[r,m]=k.useState(null),[l,g]=k.useState(!1),u=async()=>{try{g(!0);const c=await te(a,{pubkey:o.pubkey.toString(),amm:o.amm.toString(),mintA:o.mintA.toString(),mintB:o.mintB.toString()},i||new p(""));m(c)}catch(c){console.error("Error fetching pool prices:",c)}finally{g(!1)}};return k.useEffect(()=>{u()},[o,a,i]),e.jsxs("div",{className:"pool-item",children:[e.jsx("div",{className:"pool-header",children:e.jsx("h3",{children:"Pool Details"})}),e.jsxs("div",{className:"pool-info",children:[e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Pool Pubkey:"}),e.jsx("span",{className:"pool-value",title:o.pubkey.toString(),children:o.pubkey.toString()})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Token A mint addr:"}),e.jsx("span",{className:"pool-value",title:o.mintA.toString(),children:o.mintA.toString()})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Token B mint addr:"}),e.jsx("span",{className:"pool-value",title:o.mintB.toString(),children:o.mintB.toString()})]})]}),e.jsxs("div",{className:"lending-pool-info",children:[e.jsx("h4",{children:"Lending Pool"}),l?e.jsx("div",{className:"loading-lending-pool-details",children:"Loading lending pool details..."}):r?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Lending Pool tokenAAmount:"}),e.jsx("span",{className:"pool-value",children:r.lendingPool.tokenAAmount.toFixed(6)})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Lending Pool tokenBAmount:"}),e.jsx("span",{className:"pool-value",children:r.lendingPool.tokenBAmount.toFixed(6)})]})]}):e.jsx("div",{className:"error-message",children:"Failed to load lending pool details"})]}),e.jsxs("div",{className:"user-assets-details",children:[e.jsx("h4",{children:"Your Assets"}),l?e.jsx("div",{className:"loading-lending-pool-details",children:"Loading lending pool details..."}):r?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"tokenA Balance:"}),e.jsx("span",{className:"pool-value",children:r.userAssets.tokenAAmount})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"tokenB Balance:"}),e.jsx("span",{className:"pool-value",children:r.userAssets.tokenBAmount})]})]}):e.jsx("div",{className:"error-message",children:"Failed to load lending pool details"})]}),e.jsxs("div",{className:"user-lending-details",children:[e.jsx("h4",{children:"Your lending details"}),l?e.jsx("div",{className:"loading-lending-pool-details",children:"Loading lending pool details..."}):r?e.jsx(e.Fragment,{children:e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"lended tokenB amount:"}),e.jsx("span",{className:"pool-value",children:r.userAssets.lendingReceiptAmount})]})}):e.jsx("div",{className:"error-message",children:"Failed to load lending pool details"})]}),e.jsx("div",{className:"lending-pool-actions",children:e.jsxs("div",{className:"lending-pool-action-buttons",children:[e.jsx("button",{className:"lending-pool-action-button",onClick:()=>n(t==="lend"?"none":"lend"),children:t==="lend"?"Hide Lend":"Lend"}),e.jsx("button",{className:"lending-pool-action-button",onClick:()=>n(t==="redeem"?"none":"redeem"),children:t==="redeem"?"Hide Redeem":"Redeem"})]})}),e.jsx("div",{className:"lending-pool-actions",children:e.jsx("button",{className:"lending-pool-refresh-button",onClick:u,disabled:l,children:l?"Loading...":"🔄 Refresh"})}),t==="lend"&&e.jsx("div",{className:"form-container",children:e.jsx(no,{pool:o,onSuccess:c=>{s(c),n("none"),u()}})}),t==="redeem"&&e.jsx("div",{className:"form-container",children:e.jsx(ro,{pool:o,onSuccess:c=>{s(c),n("none"),u()}})})]})},io=()=>{const o=I(),{connection:s}=P(),[a,i]=k.useState([]),[t,n]=k.useState(!1),[r,m]=k.useState(""),[l,g]=k.useState(""),u=async()=>{if(o){n(!0);try{const d=await ce(o,s);i(d)}catch(d){console.error("Error fetching pools:",d),m(d instanceof Error?d.message:"Failed to fetch pools")}finally{n(!1)}}};k.useEffect(()=>{u()},[o,s]);const c=d=>{g(d),u()};return e.jsxs("div",{className:"pool-list-container",children:[e.jsx("h2",{children:"Liquidity Pools"}),r&&e.jsx("div",{className:"error-message",children:r}),l&&e.jsxs("div",{className:"success-message",children:["Transaction successful!",e.jsx("a",{href:`https://explorer.solana.com/tx/${l}`,target:"_blank",rel:"noopener noreferrer",children:"View on Explorer"})]}),t?e.jsx("div",{className:"loading",children:"Loading pools..."}):a.length===0?e.jsx("div",{className:"empty-state",children:e.jsx("p",{children:"No pools found"})}):e.jsx("div",{className:"pool-list",children:a.map(d=>e.jsx(so,{pool:d,onTxSuccess:c}))})]})};async function co(o,s,a,i,t,n){try{console.log("Executing borrow...");const r=new R(s,o,{preflightCommitment:"confirmed"}),m=new C(j,r),l=await m.account.pool.fetch(a);console.log("Pool info:",{amm:l.amm.toString(),mintA:l.mintA.toString(),mintB:l.mintB.toString()});const[g]=p.findProgramAddressSync([l.amm.toBuffer(),i.toBuffer(),t.toBuffer(),f.from(M)],m.programId),[u]=p.findProgramAddressSync([a.toBuffer(),f.from(F)],m.programId),[c]=p.findProgramAddressSync([a.toBuffer(),f.from(q)],m.programId),[d]=p.findProgramAddressSync([a.toBuffer(),f.from(O)],m.programId),[h]=p.findProgramAddressSync([a.toBuffer(),f.from(z)],m.programId),b=await _.token.associatedAddress({mint:i,owner:g}),w=await _.token.associatedAddress({mint:t,owner:g}),y=await _.token.associatedAddress({mint:i,owner:u}),x=await _.token.associatedAddress({mint:t,owner:u}),v=await _.token.associatedAddress({mint:i,owner:r.wallet.publicKey}),A=await _.token.associatedAddress({mint:t,owner:r.wallet.publicKey}),[N]=p.findProgramAddressSync([a.toBuffer(),r.wallet.publicKey.toBuffer(),f.from(U)],m.programId),S=await _.token.associatedAddress({mint:c,owner:N}),K=await _.token.associatedAddress({mint:d,owner:N}),W=await _.token.associatedAddress({mint:h,owner:N});console.log("Sending borrow transaction...");const G=J.setComputeUnitLimit({units:1e6});return await m.methods.borrow(n).accounts({pool:a,poolAuthority:g,mintA:i,mintB:t,poolAccountA:b,poolAccountB:w,lendingPoolAuthority:u,lendingPoolTokenA:y,lendingPoolTokenB:x,borrowReceiptTokenMint:c,collateralReceiptTokenMint:d,borrowerBorrowBlockHeightTokenMint:h,borrower:r.wallet.publicKey,borrowerTokenA:v,borrowerTokenB:A,borrowerBorrowReceiptToken:S,borrowerCollateralReceiptToken:K,borrowerBorrowBlockHeightReceiptToken:W,payer:r.wallet.publicKey,tokenProgram:L,associatedTokenProgram:E,systemProgram:T.programId}).preInstructions([G]).rpc()}catch(r){throw console.error("Error in borrow:",r),r instanceof Error&&console.error("Error details:",{message:r.message,stack:r.stack}),r}}const lo=({pool:o,onSuccess:s})=>{const a=I(),{connection:i}=P(),[t,n]=k.useState(""),[r,m]=k.useState(!1),[l,g]=k.useState(""),u=async d=>{if(d.preventDefault(),n(""),m(!0),!a){n("Please connect your wallet first"),m(!1);return}try{const h=parseFloat(l);if(isNaN(h)||h<=0)throw new Error("Invalid borrow amount");const b=new p(o.pubkey),w=new p(o.mintA),y=new p(o.mintB),x=await co(a,i,b,w,y,new ee(h));console.log(`Transaction URL: https://explorer.solana.com/tx/${x}`),g(""),s(x)}catch(h){console.error("Error borrowing:",h),n(h instanceof Error?h.message:"Failed to borrow")}finally{m(!1)}},c=(o.minCollateralRatio/100).toFixed(2);return e.jsxs("div",{className:"form-wrapper",children:[e.jsx("h3",{children:"Borrow Tokens"}),t&&e.jsx("div",{className:"error-message",children:t}),e.jsxs("form",{onSubmit:u,children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Amount to Borrow (Token A):"}),e.jsx("input",{type:"number",value:l,onChange:d=>g(d.target.value),placeholder:"Enter amount to borrow",required:!0,min:"0",step:"any",disabled:r})]}),e.jsxs("div",{className:"lending-pool-info-summary",children:[e.jsxs("div",{children:["Pool: ",o.pubkey.toString().slice(0,4),"...",o.pubkey.toString().slice(-4)]}),e.jsxs("div",{children:["Token A (Borrow): ",o.mintA.toString().slice(0,4),"...",o.mintA.toString().slice(-4)]}),e.jsxs("div",{children:["Token B (Collateral): ",o.mintB.toString().slice(0,4),"...",o.mintB.toString().slice(-4)]}),e.jsxs("div",{children:["Min Collateral Ratio: ",c,"%"]}),e.jsxs("div",{children:["Base Rate: ",(o.fee/100).toFixed(2),"%"]})]}),e.jsx("div",{className:"warning-message",children:"Note: Please ensure you provide sufficient collateral based on the minimum collateral ratio."}),e.jsx("button",{type:"submit",className:"action-button",disabled:r||!a,children:r?"Processing...":"Confirm Borrow"})]})]})};async function mo(o,s,a,i,t){try{console.log("Executing repay...");const n=new R(s,o,{preflightCommitment:"confirmed"}),r=new C(j,n),m=await r.account.pool.fetch(a),[l]=p.findProgramAddressSync([m.amm.toBuffer(),i.toBuffer(),t.toBuffer(),f.from(M)],r.programId),[g]=p.findProgramAddressSync([a.toBuffer(),f.from(F)],r.programId),[u]=p.findProgramAddressSync([a.toBuffer(),f.from(q)],r.programId),[c]=p.findProgramAddressSync([a.toBuffer(),f.from(O)],r.programId),d=await _.token.associatedAddress({mint:i,owner:g}),h=await _.token.associatedAddress({mint:t,owner:g}),b=await _.token.associatedAddress({mint:i,owner:n.wallet.publicKey}),w=await _.token.associatedAddress({mint:t,owner:n.wallet.publicKey}),[y]=p.findProgramAddressSync([a.toBuffer(),n.wallet.publicKey.toBuffer(),f.from(U)],r.programId),x=await _.token.associatedAddress({mint:u,owner:y}),v=await _.token.associatedAddress({mint:c,owner:y}),[A]=p.findProgramAddressSync([a.toBuffer(),f.from(z)],r.programId),N=await _.token.associatedAddress({mint:A,owner:y});console.log("Sending repay transaction...");const S=await r.methods.repay().accounts({mintA:i,mintB:t,pool:a,poolAuthority:l,lendingPoolAuthority:g,lendingPoolTokenA:d,lendingPoolTokenB:h,borrowReceiptTokenMint:u,collateralReceiptTokenMint:c,borrowerBorrowBlockHeightMint:A,borrower:n.wallet.publicKey,borrowerTokenA:b,borrowerTokenB:w,borrowerAuthority:y,borrowerBorrowReceiptToken:x,borrowerCollateralReceiptToken:v,borrowerBorrowBlockHeightReceiptToken:N,payer:n.wallet.publicKey,tokenProgram:L,associatedTokenProgram:E,systemProgram:T.programId}).rpc();return console.log("Repay transaction signature:",S),S}catch(n){throw console.error("Error in repay:",n),n}}const uo=({pool:o,onSuccess:s})=>{const a=I(),{connection:i}=P(),[t,n]=k.useState(""),[r,m]=k.useState(!1),l=async g=>{if(g.preventDefault(),n(""),m(!0),!a){n("Please connect your wallet first"),m(!1);return}try{const u=new p(o.pubkey),c=new p(o.mintA),d=new p(o.mintB),h=await mo(a,i,u,c,d);console.log(`Transaction URL: https://explorer.solana.com/tx/${h}`),s(h)}catch(u){console.error("Error repaying:",u),n(u instanceof Error?u.message:"Failed to repay")}finally{m(!1)}};return e.jsxs("div",{className:"form-wrapper",children:[e.jsx("h3",{children:"Repay Loan"}),t&&e.jsx("div",{className:"error-message",children:t}),e.jsxs("form",{onSubmit:l,children:[e.jsx("div",{className:"form-group",children:e.jsx("div",{className:"info-message",children:"Repaying your loan will return your collateral proportionally."})}),e.jsx("button",{type:"submit",className:"action-button",disabled:r||!a,children:r?"Processing...":"Confirm Repay"})]})]})};async function po(o,s,a,i,t){try{console.log("Executing borrow...");const n=new R(s,o,{preflightCommitment:"confirmed"}),r=new C(j,n),[m]=p.findProgramAddressSync([a.toBuffer(),f.from(F)],r.programId),l=await H(i,m,!0),[g]=p.findProgramAddressSync([a.toBuffer(),f.from(O)],r.programId),[u]=p.findProgramAddressSync([a.toBuffer(),f.from(z)],r.programId),c=H(i,n.wallet.publicKey),[d]=p.findProgramAddressSync([a.toBuffer(),n.wallet.publicKey.toBuffer(),f.from(U)],r.programId),h=await H(g,d,!0),b=await _.token.associatedAddress({mint:u,owner:d});console.log("Sending borrow transaction...");const w=J.setComputeUnitLimit({units:1e6});return{tx:await r.methods.depositCollateral(t).accounts({pool:a,lendingPoolAuthority:m,lendingPoolTokenB:l,collateralReceiptTokenMint:g,borrowerBorrowBlockHeightTokenMint:u,borrower:n.wallet.publicKey,borrowerTokenB:c,borrowerAuthority:d,borrowerCollateralReceiptToken:h,borrowerBorrowBlockHeightReceiptToken:b,payer:n.wallet.publicKey,tokenProgram:L,associatedTokenProgram:E,systemProgram:T.programId}).preInstructions([w]).rpc()}}catch(n){throw console.error("Error in borrow:",n),n instanceof Error&&console.error("Error details:",{message:n.message,stack:n.stack}),n}}const go=({pool:o,onSuccess:s})=>{const a=I(),{connection:i}=P(),[t,n]=k.useState(""),[r,m]=k.useState(!1),[l,g]=k.useState(""),u=async c=>{if(c.preventDefault(),n(""),m(!0),!a){n("Please connect your wallet first"),m(!1);return}try{const d=parseFloat(l);if(isNaN(d)||d<=0)throw new Error("Invalid amount");const h=new p(o.pubkey),b=new p(o.mintB),w=await po(a,i,h,b,new ee(d));console.log(`Transaction URL: https://explorer.solana.com/tx/${w.tx}`),g(""),s(w.tx)}catch(d){console.error("Error lending:",d),n(d instanceof Error?d.message:"Failed to lend")}finally{m(!1)}};return e.jsxs("div",{className:"form-wrapper",children:[e.jsx("h3",{children:"DepositCollateral Tokens"}),t&&e.jsx("div",{className:"error-message",children:t}),e.jsxs("form",{onSubmit:u,children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Amount to DepositCollateral:"}),e.jsx("input",{type:"number",value:l,onChange:c=>g(c.target.value),placeholder:"Enter amount of collateral to deposit",required:!0,min:"0",step:"any",disabled:r})]}),e.jsxs("div",{className:"lendingPool-info-summary",children:[e.jsxs("div",{children:["Pool: ",o.pubkey.toString()]}),e.jsxs("div",{children:["Token A: ",o.mintA.toString()]}),e.jsxs("div",{children:["Token B: ",o.mintB.toString()]})]}),e.jsx("button",{type:"submit",className:"action-button",disabled:r||!a,children:r?"Processing...":"Confirm DepositCollateral"})]})]})},ho=({pool:o,onTxSuccess:s})=>{const{connection:a}=P(),{publicKey:i}=Z(),[t,n]=k.useState("none"),[r,m]=k.useState(null),[l,g]=k.useState(!1),u=async()=>{try{g(!0);const c=await te(a,{pubkey:o.pubkey.toString(),amm:o.amm.toString(),mintA:o.mintA.toString(),mintB:o.mintB.toString()},i||new p(""));m(c)}catch(c){console.error("Error fetching pool prices:",c)}finally{g(!1)}};return k.useEffect(()=>{u()},[o,a,i]),e.jsxs("div",{className:"pool-item",children:[e.jsx("div",{className:"pool-header",children:e.jsx("h3",{children:"Pool Details"})}),e.jsxs("div",{className:"pool-info",children:[e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Pool Pubkey:"}),e.jsx("span",{className:"pool-value",title:o.pubkey.toString(),children:o.pubkey.toString()})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Token A mint addr:"}),e.jsx("span",{className:"pool-value",title:o.mintA.toString(),children:o.mintA.toString()})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Token B mint addr:"}),e.jsx("span",{className:"pool-value",title:o.mintB.toString(),children:o.mintB.toString()})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Min Collateral Ratio:"}),e.jsx("span",{className:"pool-value",title:o.minCollateralRatio.toString(),children:o.minCollateralRatio})]})]}),e.jsxs("div",{className:"pool-price-info",children:[e.jsx("h4",{children:"Prices"}),l?e.jsx("div",{className:"loading-prices",children:"Loading prices..."}):r?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"TokenA Amount:"}),e.jsx("span",{className:"pool-value",children:r.pool.tokenAAmount.toFixed(6)})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"TokenB Amount:"}),e.jsx("span",{className:"pool-value",children:r.pool.tokenBAmount.toFixed(6)})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Price (A → B):"}),e.jsxs("span",{className:"pool-value",children:["1 A = ",r.pool.aToB.toFixed(6)," B"]})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Price (B → A):"}),e.jsxs("span",{className:"pool-value",children:["1 B = ",r.pool.bToA.toFixed(6)," A"]})]})]}):e.jsx("div",{className:"error-message",children:"Failed to load prices"})]}),e.jsxs("div",{className:"lending-pool-info",children:[e.jsx("h4",{children:"Lending Pool"}),l?e.jsx("div",{className:"loading-lending-pool-details",children:"Loading lending pool details..."}):r?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Lending Pool tokenAAmount:"}),e.jsx("span",{className:"pool-value",children:r.lendingPool.tokenAAmount.toFixed(6)})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Lending Pool tokenBAmount:"}),e.jsx("span",{className:"pool-value",children:r.lendingPool.tokenBAmount.toFixed(6)})]})]}):e.jsx("div",{className:"error-message",children:"Failed to load lending pool details"})]}),e.jsxs("div",{className:"user-assets-details",children:[e.jsx("h4",{children:"Your Assets"}),l?e.jsx("div",{className:"loading-lending-pool-details",children:"Loading lending pool details..."}):r?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"tokenA Balance:"}),e.jsx("span",{className:"pool-value",children:r.userAssets.tokenAAmount})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"tokenB Balance:"}),e.jsx("span",{className:"pool-value",children:r.userAssets.tokenBAmount})]})]}):e.jsx("div",{className:"error-message",children:"Failed to load lending pool details"})]}),e.jsxs("div",{className:"user-lending-details",children:[e.jsx("h4",{children:"Your borrowing details"}),l?e.jsx("div",{className:"loading-lending-pool-details",children:"Loading lending pool details..."}):r?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"borrowed tokenB amount:"}),e.jsx("span",{className:"pool-value",children:r.userAssets.borrowReceiptAmount})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"collateral TokenA amount:"}),e.jsx("span",{className:"pool-value",children:r.userAssets.collateralReceiptAmount})]})]}):e.jsx("div",{className:"error-message",children:"Failed to load lending pool details"})]}),e.jsxs("div",{className:"lending-pool-actions",children:[e.jsxs("div",{className:"lending-pool-action-buttons",children:[e.jsx("button",{className:"lending-pool-action-button",onClick:()=>n(t==="depositCollateral"?"none":"depositCollateral"),children:t==="depositCollateral"?"Hide DepositCollateral":"DepositCollateral"}),e.jsx("button",{className:"lending-pool-action-button",onClick:()=>n(t==="borrow"?"none":"borrow"),children:t==="borrow"?"Hide Borrow":"Borrow"}),e.jsx("button",{className:"lending-pool-action-button",onClick:()=>n(t==="repay"?"none":"repay"),children:t==="repay"?"Hide Repay":"Repay"})]}),e.jsx("button",{className:"lending-pool-refresh-button",onClick:u,disabled:l,children:l?"Loading...":"🔄 Refresh"})]}),t==="borrow"&&e.jsx("div",{className:"form-container",children:e.jsx(lo,{pool:o,onSuccess:c=>{s(c),n("none"),u()}})}),t==="repay"&&e.jsx("div",{className:"form-container",children:e.jsx(uo,{pool:o,onSuccess:c=>{s(c),n("none"),u()}})}),t==="depositCollateral"&&e.jsx("div",{className:"form-container",children:e.jsx(go,{pool:o,onSuccess:c=>{s(c),n("none"),u()}})})]})},ko=()=>{const o=I(),{connection:s}=P(),[a,i]=k.useState([]),[t,n]=k.useState(!1),[r,m]=k.useState(""),[l,g]=k.useState(""),u=async()=>{if(o){n(!0);try{const d=await ce(o,s);i(d)}catch(d){console.error("Error fetching pools:",d),m(d instanceof Error?d.message:"Failed to fetch pools")}finally{n(!1)}}};k.useEffect(()=>{u()},[o,s]);const c=d=>{g(d),u()};return e.jsxs("div",{className:"pool-list-container",children:[e.jsx("h2",{children:"Liquidity Pools"}),r&&e.jsx("div",{className:"error-message",children:r}),l&&e.jsxs("div",{className:"success-message",children:["Transaction successful!",e.jsx("a",{href:`https://explorer.solana.com/tx/${l}`,target:"_blank",rel:"noopener noreferrer",children:"View on Explorer"})]}),t?e.jsx("div",{className:"loading",children:"Loading pools..."}):a.length===0?e.jsx("div",{className:"empty-state",children:e.jsx("p",{children:"No pools found"})}):e.jsx("div",{className:"pool-list",children:a.map(d=>e.jsx(ho,{pool:d,onTxSuccess:c}))})]})},le="GUXNPX5ci1Qj76MZe2aRJ33zK48VmT6gXVyR86CsF4T5",fo=()=>{const{publicKey:o}=Z(),[s,a]=k.useState("amm");return e.jsx(qe,{children:e.jsxs("div",{className:"defi-dashboard",children:[e.jsxs("div",{className:"tabs",children:[(o==null?void 0:o.toBase58())==le&&e.jsx("button",{className:`tab ${s==="amm"?"active":""}`,onClick:()=>a("amm"),children:"AMM"}),e.jsx("button",{className:`tab ${s==="pool"?"active":""}`,onClick:()=>a("pool"),children:"Swap"}),e.jsx("button",{className:`tab ${s==="lenderPool"?"active":""}`,onClick:()=>a("lenderPool"),children:"Lend"}),e.jsx("button",{className:`tab ${s==="borrowerPool"?"active":""}`,onClick:()=>a("borrowerPool"),children:"Borrow"}),e.jsx("button",{className:`tab ${s==="liquidate"?"active":""}`,onClick:()=>a("liquidate"),children:"Liquidate"})]}),e.jsx("div",{className:"content",children:s==="amm"&&(o==null?void 0:o.toBase58())==le?e.jsxs("div",{children:[e.jsx(Ke,{}),e.jsx(Me,{})]}):s==="pool"?e.jsxs("div",{children:[e.jsx(ze,{}),e.jsx(Ge,{})]}):s==="lenderPool"?e.jsx("div",{children:e.jsx(io,{})}):s==="borrowerPool"?e.jsx("div",{children:e.jsx(ko,{})}):s==="liquidate"?e.jsx("div",{children:e.jsx(oo,{})}):e.jsx(bo,{})})]})})},bo=()=>e.jsx("div",{children:e.jsx("h3",{children:" Coming Soon..."})}),pe=k.createContext({network:"localnet",setNetwork:()=>{}}),wo=()=>k.useContext(pe),yo={"mainnet-beta":ae("mainnet-beta"),testnet:ae("testnet"),devnet:ae("devnet"),localnet:"http://127.0.0.1:8899"},_o=({onChange:o,value:s})=>e.jsx("div",{className:"solana-network-select-container",children:e.jsxs("select",{onChange:a=>o(a.target.value),value:s,className:"solana-network-select",children:[e.jsx("option",{value:"localnet",children:"Localnet"}),e.jsx("option",{value:"devnet",children:"Devnet"}),e.jsx("option",{value:"testnet",children:"Testnet"}),e.jsx("option",{value:"mainnet-beta",children:"Mainnet"})]})}),xo=({children:o})=>{const[s,a]=k.useState("localnet"),i=k.useMemo(()=>yo[s],[s]),t=k.useMemo(()=>[new xe],[]);return e.jsx(pe.Provider,{value:{network:s,setNetwork:a},children:e.jsx(ve,{endpoint:i,children:e.jsx(Ae,{wallets:t,autoConnect:!0,children:e.jsx(je,{children:o})})})})},vo=()=>{const{connected:o}=Z(),{network:s,setNetwork:a}=wo();return e.jsxs("div",{className:"container",children:[e.jsx("nav",{className:"navbar",children:e.jsxs("div",{className:"navbar-content",children:[e.jsx(_o,{onChange:a,value:s}),e.jsx(Ne,{})]})}),e.jsx("main",{className:"main-content",children:o?e.jsx(fo,{}):e.jsx("div",{className:"connect-prompt",children:e.jsx("h2",{children:"Please connect your wallet to continue"})})})]})};typeof window<"u"&&(window.global=window,window.Buffer=f);Pe.createRoot(document.getElementById("root")).render(e.jsx(Se.StrictMode,{children:e.jsx(xo,{children:e.jsx(vo,{})})})); diff --git a/assets/index-tHDsgEDA.css b/assets/index-tHDsgEDA.css deleted file mode 100644 index 80b29b3..0000000 --- a/assets/index-tHDsgEDA.css +++ /dev/null @@ -1 +0,0 @@ -:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}html,body{width:100%;min-height:100vh;background-color:#f5f5f5}body{margin:0;padding:0;color:#213547;background-color:#f5f5f5}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#512da8;color:#fff;cursor:pointer;transition:all .25s}.error-message{color:#f44;background-color:#ffe0e0;padding:10px;border-radius:4px;margin-bottom:16px}.success-message{color:#4caf50;background-color:#e8f5e9;padding:10px;border-radius:4px;margin-bottom:16px}.create-amm-container{max-width:500px;margin:0 auto;padding:20px}.amm-item{border:1px solid #ddd;border-radius:4px;padding:16px;margin-bottom:12px;background-color:#fff}.amm-details{display:flex;justify-content:space-between;margin-bottom:8px}.amm-details:last-child{margin-bottom:0}.amm-label{font-weight:500;color:#666}.amm-value{word-break:break-all}.pool-item{border:1px solid #ddd;border-radius:4px;padding:16px;margin-bottom:12px;background-color:#fff}.pool-details{display:flex;justify-content:space-between;margin-bottom:8px}.pool-details:last-child{margin-bottom:0}.pool-label{font-weight:500;color:#666}.pool-value{word-break:break-all;max-width:70%;text-align:right}.swap-direction{display:flex;gap:8px;margin-bottom:16px}.direction-button{flex:1;padding:8px;border:1px solid #646cff;background:none;color:#646cff;border-radius:4px;cursor:pointer}.direction-button.active{background:#646cff;color:#fff}.pool-actions{display:flex;gap:8px}.pool-list-container{max-width:800px;margin:0 auto;padding:20px}.pool-list{display:flex;flex-direction:column;gap:16px}.pool-item{background:#fff;border-radius:8px;padding:20px;box-shadow:0 2px 4px #0000001a}.pool-details{display:flex;justify-content:space-between;margin-bottom:8px;font-size:14px}.pool-label{color:#666;font-weight:500}.pool-value{color:#333;word-break:break-all;max-width:70%;text-align:right}.pool-actions{display:flex;gap:8px;margin-top:16px}.action-button{flex:1;background-color:#646cff;color:#fff;border:none;padding:8px 16px;border-radius:4px;cursor:pointer;font-size:14px;transition:background-color .2s}.action-button:hover{background-color:#747bff}.action-button:disabled{background-color:#ccc;cursor:not-allowed}.form-container{margin-top:16px;padding-top:16px;border-top:1px solid #eee}.success-message{background-color:#e6ffe6;border:1px solid #b3ffb3;color:green;padding:12px;border-radius:4px;margin-bottom:16px}.success-message a:hover{text-decoration:underline}.error-message{background-color:#ffe6e6;border:1px solid #ffb3b3;color:#c00;padding:12px;border-radius:4px;margin-bottom:16px}.loading{text-align:center;color:#666;padding:20px}.empty-state{text-align:center;color:#666;padding:40px;background:#f9f9f9;border-radius:8px}.form-group input:focus{border-color:#646cff;outline:none}.pool-price-info{margin:16px 0;padding:16px;background-color:#f8f9fa;border-radius:4px}.pool-price-info h4{margin:0 0 12px;color:#333;font-size:14px}.loading-prices{color:#666;font-size:14px;text-align:center;padding:8px 0}.pool-details .pool-value{font-family:monospace}.lending-pool-item{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:20px;margin-bottom:20px;box-shadow:0 2px 4px #0000000d}.pool-info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;margin-bottom:20px}.info-section{background:#f8f9fa;border:1px solid #e9ecef;border-radius:6px;padding:15px}.info-section h4{margin:0 0 15px;color:#343a40;font-size:1rem;font-weight:600}.info-row{margin-bottom:10px}.info-row:last-child{margin-bottom:0}.info-label{display:block;font-size:.875rem;color:#6c757d;margin-bottom:4px}.info-value{display:block;font-weight:500;color:#212529}.pool-actions{display:flex;justify-content:space-between;align-items:center;padding-top:15px;border-top:1px solid #e9ecef}.action-buttons{display:flex;gap:10px}.action-button{padding:8px 16px;border:none;border-radius:4px;background-color:#0d6efd;color:#fff;font-weight:500;cursor:pointer;transition:background-color .2s}.action-button:hover{background-color:#0b5ed7}.refresh-button{padding:6px 12px;border:1px solid #dee2e6;border-radius:4px;background-color:#fff;color:#212529;cursor:pointer;transition:all .2s}.refresh-button:hover:not(:disabled){background-color:#f8f9fa;border-color:#ced4da}.refresh-button:disabled{opacity:.65;cursor:not-allowed}.form-container{margin-top:20px;padding-top:20px;border-top:1px solid #e9ecef}.form-wrapper{background:#fff;border-radius:8px;padding:20px;box-shadow:0 2px 4px #0000001a}.error-message{background-color:#ffe6e6;color:#d63031;padding:10px;border-radius:4px;margin-bottom:15px}.warning-message{background-color:#fff3cd;color:#856404;padding:10px;border-radius:4px;margin:15px 0}.lending-pool-info-summary{background:#f8f9fa;border:1px solid #e9ecef;border-radius:6px;padding:15px;margin:15px 0;font-size:.9rem}.lending-pool-info-summary>div{margin:5px 0;color:#495057}.action-button{width:100%;padding:12px;background-color:#0d6efd;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:1rem;transition:background-color .2s}.action-button:hover:not(:disabled){background-color:#0b5ed7}.action-button:disabled{background-color:#6c757d;cursor:not-allowed}.liquidate-container{max-width:500px;margin:0 auto;padding:20px}.error-message{color:red;margin-bottom:15px;padding:10px;border:1px solid red;border-radius:4px}.success-message a{color:green;margin-left:5px;text-decoration:underline}.input-field{padding:8px;border:1px solid #ccc;border-radius:4px;font-size:16px}.input-field:focus{outline:none;border-color:#4caf50;box-shadow:0 0 0 2px #4caf5033}.submit-button:disabled{background-color:#ccc;cursor:not-allowed}.submit-button:hover:not(:disabled){background-color:#45a049}*{margin:0;padding:0;box-sizing:border-box}.container{min-height:100vh;width:100%;background-color:#f5f5f5;display:flex;flex-direction:column}.navbar{width:100%;background-color:#fff;padding:1rem 0;box-shadow:0 2px 4px #0000001a}.navbar-content{width:100%;max-width:1200px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;padding:0 2rem}.main-content{width:100%;flex:1;padding:2rem;display:flex;flex-direction:column;align-items:center}.defi-dashboard{width:100%;max-width:1200px;background:#fff;border-radius:8px;padding:2rem;margin:20px auto;box-shadow:0 2px 4px #0000001a}.tabs{display:flex;gap:10px;margin-bottom:20px;justify-content:center}.form{max-width:400px;margin:0 auto;padding:0 20px;display:flex;flex-direction:column;gap:15px}.connect-prompt{text-align:center;margin-top:5rem}.title{font-size:1.5rem;font-weight:700;color:#333}.form-group{margin-bottom:20px;display:flex;flex-direction:column;gap:5px}.form-group label{display:block;margin-bottom:8px;color:#666}.form-group input{width:100%;padding:10px;border:1px solid #ddd;border-radius:4px;font-size:16px}.submit-button{width:100%;padding:12px;background:#512da8;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s;font-size:16px}.submit-button:hover{background:#4527a0}#root{width:100%;display:flex;flex-direction:column;min-height:100vh}.solana-network-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#1c1c1c;border:1px solid #383838;border-radius:12px;padding:8px 36px 8px 12px;font-size:14px;font-weight:500;color:#fff;cursor:pointer;transition:all .2s ease;min-width:160px;height:40px}.solana-network-select:hover{border-color:#4e44ce;background-color:#232323}.solana-network-select:focus{outline:none;border-color:#9945ff;box-shadow:0 0 0 2px #9945ff1a}.solana-network-status{display:flex;align-items:center;gap:12px;padding:12px 16px;background-color:#1c1c1c;border-radius:12px;border:1px solid #383838;margin-bottom:16px}.solana-network-label{font-size:14px;font-weight:500;color:#777}.solana-network-value{font-size:14px;font-weight:600;color:#fff;padding:4px 12px;background-color:#232323;border-radius:8px;border:1px solid #383838}.solana-network-value[data-network=mainnet-beta]{color:#14f195}.solana-network-value[data-network=devnet]{color:#9945ff}.solana-network-value[data-network=testnet]{color:#00c2ff}.solana-network-value[data-network=localnet]{color:#f6c343}.solana-content{max-width:1200px;margin:0 auto;padding:24px}.wallet-adapter-button{height:40px!important;padding:0 16px!important;border-radius:12px!important;background-color:#4e44ce!important;transition:all .2s ease!important}.wallet-adapter-button:hover{background-color:#5a50d8!important}.navbar-content{width:100%;max-width:1200px;margin:0 auto;padding:0 2rem;display:flex;justify-content:space-between;align-items:center;height:64px}.solana-network-select-container{align-items:center;position:relative;display:inline-block}.solana-network-select-container:after{content:"";position:absolute;right:12px;top:50%;transform:translateY(-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #FFFFFF;pointer-events:none}.action-button:hover,.lending-pool-action-button:hover,.lending-pool-refresh-button:hover{background-color:#45a049;transform:translateY(-2px);box-shadow:0 2px 5px #0003;border-color:transparent}.pool-actions,.lending-pool-actions{display:flex;gap:10px;margin:15px 0;flex-wrap:wrap;justify-content:center}.lending-pool-action-buttons{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;width:100%}.action-button[onClick*=initPool]{background-color:#9c27b0}.action-button[onClick*=deposit]{background-color:#2196f3}.action-button[onClick*=swap]{background-color:#ff9800}.lending-pool-action-button[onClick*=lend]{background-color:#514caf}.lending-pool-action-button[onClick*=borrow]{background-color:#f44336}.lending-pool-action-button[onClick*=repay]{background-color:#795548}.lending-pool-action-button[onClick*=depositCollateral]{background-color:#607d8b}.lending-pool-refresh-button{background-color:#6e21f3}.lending-pool-refresh-button:hover{background-color:#7919d2}.action-button,.lending-pool-action-button,.lending-pool-refresh-button{background-color:#512da8;color:#fff;padding:10px 20px;border:none;border-radius:5px;cursor:pointer;font-size:14px;margin:5px;transition:all .3s ease;width:auto}.action-button:disabled,.lending-pool-action-button:disabled,.lending-pool-refresh-button:disabled{background-color:#ccc;cursor:not-allowed;transform:none;box-shadow:none;opacity:.7}.form-container{background-color:#f5f5f5;padding:15px;border-radius:8px;margin:10px 0;box-shadow:0 2px 4px #0000001a} diff --git a/assets/index-wN1XpWKr.js b/assets/index-wN1XpWKr.js new file mode 100644 index 0000000..444300f --- /dev/null +++ b/assets/index-wN1XpWKr.js @@ -0,0 +1 @@ +import{A as C,P as R,a as m,S as T,u as L,b as N,r as g,j as e,B as f,i as _,C as J,T as E,c as I,d as Q,g as B,e as F,f as ae,h as H,k as oe,l as z,m as te,n as se,o as Ae,p as je,W as Ne,q as Pe,s as Se,t as Be,R as Te}from"./vendor-C_X21sW7.js";(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))c(a);new MutationObserver(a=>{for(const n of a)if(n.type==="childList")for(const s of n.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&c(s)}).observe(document,{childList:!0,subtree:!0});function t(a){const n={};return a.integrity&&(n.integrity=a.integrity),a.referrerPolicy&&(n.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?n.credentials="include":a.crossOrigin==="anonymous"?n.credentials="omit":n.credentials="same-origin",n}function c(a){if(a.ep)return;a.ep=!0;const n=t(a);fetch(a.href,n)}})();const Le="C8sj5h7nejVHeyWvq6aCwrFWY5Q5QGuZDPqVwVHPxNLm",Ee={name:"fall",version:"0.1.0",spec:"0.1.0",description:"Created with Anchor"},Ie=[{name:"borrow",discriminator:[228,253,131,202,207,116,89,18],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"lending_pool_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[100]}]}},{name:"lending_pool_token_a",writable:!0,pda:{seeds:[{kind:"account",path:"lending_pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"pool.mint_a",account:"Pool"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrow_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[102]}]}},{name:"collateral_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[104]}]}},{name:"borrower_borrow_block_height_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[106]}]}},{name:"borrower",signer:!0},{name:"borrower_token_a",writable:!0,pda:{seeds:[{kind:"account",path:"borrower"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"pool.mint_a",account:"Pool"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_token_b",writable:!0,pda:{seeds:[{kind:"account",path:"borrower"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"pool.mint_b",account:"Pool"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"account",path:"borrower"},{kind:"const",value:[103]}]}},{name:"borrower_borrow_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"borrower_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"borrow_receipt_token_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_collateral_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"borrower_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"collateral_receipt_token_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_borrow_block_height_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"borrower_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"borrower_borrow_block_height_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",writable:!0,signer:!0},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"borrow_amount",type:"u64"}]},{name:"create_amm",discriminator:[242,91,21,170,5,68,125,64],accounts:[{name:"amm",writable:!0,pda:{seeds:[{kind:"arg",path:"id"}]}},{name:"admin"},{name:"payer",writable:!0,signer:!0},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"id",type:"pubkey"}]},{name:"create_pool",discriminator:[233,146,209,142,207,104,64,188],accounts:[{name:"amm",pda:{seeds:[{kind:"account",path:"amm.id",account:"Amm"}]}},{name:"mint_a"},{name:"mint_b"},{name:"pool",writable:!0,pda:{seeds:[{kind:"account",path:"amm"},{kind:"account",path:"mint_a"},{kind:"account",path:"mint_b"}]}},{name:"pool_authority",pda:{seeds:[{kind:"account",path:"amm"},{kind:"account",path:"mint_a"},{kind:"account",path:"mint_b"},{kind:"const",value:[97]}]}},{name:"pool_account_a",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"pool_account_b",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",writable:!0,signer:!0},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"fee",type:"u16"}]},{name:"deposit_collateral",discriminator:[156,131,142,116,146,247,162,120],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"lending_pool_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[100]}]}},{name:"lending_pool_token_b",writable:!0,pda:{seeds:[{kind:"account",path:"lending_pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"pool.mint_b",account:"Pool"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"collateral_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[104]}]}},{name:"borrower_borrow_block_height_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[106]}]}},{name:"borrower",signer:!0},{name:"borrower_token_b",writable:!0,pda:{seeds:[{kind:"account",path:"borrower"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"pool.mint_b",account:"Pool"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"account",path:"borrower"},{kind:"const",value:[103]}]}},{name:"borrower_collateral_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"borrower_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"collateral_receipt_token_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_borrow_block_height_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"borrower_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"borrower_borrow_block_height_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",writable:!0,signer:!0},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"amount",type:"u64"}]},{name:"deposit_liquidity",discriminator:[245,99,59,25,151,71,233,249],accounts:[{name:"pool",writable:!0,pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"pool_authority",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"mint_a"},{kind:"account",path:"mint_b"},{kind:"const",value:[97]}]}},{name:"mint_a",relations:["pool"]},{name:"mint_b",relations:["pool"]},{name:"depositor",docs:["The account paying for all rents"],signer:!0},{name:"liquidity_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[98]}]}},{name:"pool_account_a",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"pool_account_b",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"depositor_account_liquidity",writable:!0,pda:{seeds:[{kind:"account",path:"depositor"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"liquidity_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"depositor_account_a",writable:!0,pda:{seeds:[{kind:"account",path:"depositor"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"depositor_account_b",writable:!0,pda:{seeds:[{kind:"account",path:"depositor"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",docs:["The account paying for all rents"],writable:!0,signer:!0},{name:"token_program",docs:["Solana ecosystem accounts"],address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"amount_a",type:"u64"},{name:"amount_b",type:"u64"}]},{name:"init_lending_pool_1",discriminator:[111,87,89,249,229,194,59,237],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"mint_a"},{name:"mint_b"},{name:"lending_pool_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[100]}]}},{name:"lending_pool_token_a",writable:!0,pda:{seeds:[{kind:"account",path:"lending_pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lending_pool_token_b",writable:!0,pda:{seeds:[{kind:"account",path:"lending_pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",writable:!0,signer:!0},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[]},{name:"init_lending_pool_2",discriminator:[70,160,247,111,154,255,24,219],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"lending_pool_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[100]}]}},{name:"lending_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[101]}]}},{name:"borrow_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[102]}]}},{name:"collateral_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[104]}]}},{name:"payer",writable:!0,signer:!0},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[]},{name:"init_lending_pool_3",discriminator:[226,110,186,213,63,178,83,62],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"lending_pool_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[100]}]}},{name:"lender_lending_block_height_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[105]}]}},{name:"borrower_borrow_block_height_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[106]}]}},{name:"payer",writable:!0,signer:!0},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[]},{name:"lend",discriminator:[89,34,75,168,122,47,185,45],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"lending_pool_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[100]}]}},{name:"lending_pool_token_a",writable:!0,pda:{seeds:[{kind:"account",path:"lending_pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"pool.mint_a",account:"Pool"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lending_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[101]}]}},{name:"lender_lending_block_height_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[105]}]}},{name:"lender",signer:!0},{name:"lender_token_a",writable:!0,pda:{seeds:[{kind:"account",path:"lender"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"pool.mint_a",account:"Pool"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lender_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"account",path:"lender"},{kind:"const",value:[103]}]}},{name:"lender_lend_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"lender_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"lending_receipt_token_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lender_lending_block_height_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"lender_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"lender_lending_block_height_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",docs:["The account paying for all rents"],writable:!0,signer:!0},{name:"token_program",docs:["Solana ecosystem accounts"],address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"user_lending_amount",type:"u64"}]},{name:"liquidate",discriminator:[223,179,226,125,48,46,39,74],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"pool_authority",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"mint_a"},{kind:"account",path:"mint_b"},{kind:"const",value:[97]}]}},{name:"mint_a",relations:["pool"]},{name:"mint_b",relations:["pool"]},{name:"pool_account_a",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"pool_account_b",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lending_pool_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[100]}]}},{name:"borrow_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[102]}]}},{name:"collateral_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[104]}]}},{name:"trader",signer:!0},{name:"trader_account_b",writable:!0,pda:{seeds:[{kind:"account",path:"trader"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower"},{name:"borrower_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"account",path:"borrower"},{kind:"const",value:[103]}]}},{name:"borrower_borrow_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"borrower_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"borrow_receipt_token_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_collateral_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"borrower_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"collateral_receipt_token_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",writable:!0,signer:!0},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[]},{name:"price",discriminator:[129,85,239,229,61,225,218,20],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"pool_authority",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"mint_a"},{kind:"account",path:"mint_b"},{kind:"const",value:[97]}]}},{name:"mint_a",relations:["pool"]},{name:"mint_b",relations:["pool"]},{name:"pool_account_a",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"pool_account_b",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"token_program",docs:["Solana ecosystem accounts"],address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[],returns:{defined:{name:"PriceResult"}}},{name:"redeem",discriminator:[184,12,86,149,70,196,97,225],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"pool_authority",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"},{kind:"const",value:[97]}]}},{name:"mint_a"},{name:"mint_b"},{name:"lending_pool_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[100]}]}},{name:"lending_pool_token_a",writable:!0,pda:{seeds:[{kind:"account",path:"lending_pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"pool.mint_a",account:"Pool"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lending_pool_token_b",writable:!0,pda:{seeds:[{kind:"account",path:"lending_pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lending_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[101]}]}},{name:"borrow_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[102]}]}},{name:"lender_lending_block_height_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[105]}]}},{name:"lender",signer:!0},{name:"lender_token_a",writable:!0,pda:{seeds:[{kind:"account",path:"lender"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lender_token_b",writable:!0,pda:{seeds:[{kind:"account",path:"lender"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lender_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"account",path:"lender"},{kind:"const",value:[103]}]}},{name:"lender_lending_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"lender_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"lending_receipt_token_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lender_lending_block_height_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"lender_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"lender_lending_block_height_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",writable:!0,signer:!0},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[]},{name:"repay",discriminator:[234,103,67,82,208,234,219,166],accounts:[{name:"mint_a"},{name:"mint_b"},{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"pool_authority",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"mint_a"},{kind:"account",path:"mint_b"},{kind:"const",value:[97]}]}},{name:"lending_pool_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[100]}]}},{name:"lending_pool_token_a",writable:!0,pda:{seeds:[{kind:"account",path:"lending_pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"lending_pool_token_b",writable:!0,pda:{seeds:[{kind:"account",path:"lending_pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrow_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[102]}]}},{name:"collateral_receipt_token_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[104]}]}},{name:"borrower_borrow_block_height_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[106]}]}},{name:"borrower",signer:!0},{name:"borrower_token_a",writable:!0,pda:{seeds:[{kind:"account",path:"borrower"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_token_b",writable:!0,pda:{seeds:[{kind:"account",path:"borrower"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_authority",pda:{seeds:[{kind:"account",path:"pool"},{kind:"account",path:"borrower"},{kind:"const",value:[103]}]}},{name:"borrower_borrow_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"borrower_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"borrow_receipt_token_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_collateral_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"borrower_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"collateral_receipt_token_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"borrower_borrow_block_height_receipt_token",writable:!0,pda:{seeds:[{kind:"account",path:"borrower_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"borrower_borrow_block_height_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",writable:!0,signer:!0},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[]},{name:"swap_exact_tokens_for_tokens",discriminator:[249,86,253,50,177,221,73,162],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"pool_authority",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"mint_a"},{kind:"account",path:"mint_b"},{kind:"const",value:[97]}]}},{name:"mint_a",relations:["pool"]},{name:"mint_b",relations:["pool"]},{name:"pool_account_a",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"pool_account_b",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"trader",signer:!0},{name:"trader_account_a",writable:!0,pda:{seeds:[{kind:"account",path:"trader"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"trader_account_b",writable:!0,pda:{seeds:[{kind:"account",path:"trader"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",writable:!0,signer:!0},{name:"token_program",address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"swap_a",type:"bool"},{name:"input_amount",type:"u64"},{name:"min_output_amount",type:"u64"}]},{name:"withdraw_liquidity",discriminator:[149,158,33,185,47,243,253,31],accounts:[{name:"pool",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"pool.mint_a",account:"Pool"},{kind:"account",path:"pool.mint_b",account:"Pool"}]}},{name:"pool_authority",pda:{seeds:[{kind:"account",path:"pool.amm",account:"Pool"},{kind:"account",path:"mint_a"},{kind:"account",path:"mint_b"},{kind:"const",value:[97]}]}},{name:"depositor",signer:!0},{name:"liquidity_mint",writable:!0,pda:{seeds:[{kind:"account",path:"pool"},{kind:"const",value:[98]}]}},{name:"mint_a",writable:!0,relations:["pool"]},{name:"mint_b",writable:!0,relations:["pool"]},{name:"pool_account_a",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"pool_account_b",writable:!0,pda:{seeds:[{kind:"account",path:"pool_authority"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"depositor_account_liquidity",writable:!0,pda:{seeds:[{kind:"account",path:"depositor"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"liquidity_mint"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"depositor_account_a",writable:!0,pda:{seeds:[{kind:"account",path:"depositor"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_a"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"depositor_account_b",writable:!0,pda:{seeds:[{kind:"account",path:"depositor"},{kind:"const",value:[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{kind:"account",path:"mint_b"}],program:{kind:"const",value:[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{name:"payer",docs:["The account paying for all rents"],writable:!0,signer:!0},{name:"token_program",docs:["Solana ecosystem accounts"],address:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{name:"associated_token_program",address:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{name:"system_program",address:"11111111111111111111111111111111"}],args:[{name:"amount",type:"u64"}]}],Ce=[{name:"Amm",discriminator:[143,245,200,17,74,214,196,135]},{name:"Pool",discriminator:[241,154,109,4,17,177,109,188]}],Re=[{code:6e3,name:"CalculationError",msg:"Calculation error"},{code:6001,name:"CalculationError1",msg:"Calculation error"},{code:6002,name:"InvalidFee",msg:"Invalid fee"}],De=[{name:"Amm",type:{kind:"struct",fields:[{name:"id",docs:["The primary key of the AMM"],type:"pubkey"},{name:"admin",docs:["Account that has admin authority over the AMM"],type:"pubkey"}]}},{name:"Pool",type:{kind:"struct",fields:[{name:"amm",docs:["Primary key of the AMM"],type:"pubkey"},{name:"mint_a",docs:["Mint of token A"],type:"pubkey"},{name:"mint_b",docs:["Mint of token B"],type:"pubkey"},{name:"fee",docs:["The LP fee taken on each trade, in basis points"],type:"u16"},{name:"token_a_amount",docs:["借贷池中token a的数量"],type:"u64"},{name:"token_b_amount",docs:["借贷池中token b的数量"],type:"u64"},{name:"min_collateral_ratio",docs:["最小抵押率 (基点表示,20000 = 200%)"],type:"u64"},{name:"borrow_interest_accumulator_block_height",docs:["记录上次借贷池interest_step更新时的区块高度"],type:"u64"},{name:"borrow_interest_accumulator",docs:["借款累计利息,随着区块高度增加而增加,但是增加幅度与资金借出量正相关"],type:"u64"},{name:"share_lending_block_height",docs:["共享借贷累加器区块高度"],type:"u64"},{name:"share_lending_accumulator",docs:["共享借贷累加器,资金借出量的时间积分"],type:"u64"}]}},{name:"PriceResult",type:{kind:"struct",fields:[{name:"token_a_amount",type:"u64"},{name:"token_b_amount",type:"u64"}]}}],Fe=[{name:"AUTHORITY_SEED",type:"bytes",value:"[97]"},{name:"BASE_RATE",type:"u64",value:"10000"},{name:"BORROWER_AUTHORITY_SEED",type:"bytes",value:"[103]"},{name:"BORROWER_BORROW_BLOCK_HEIGHT_TOKEN_SEED",type:"bytes",value:"[106]"},{name:"BORROW_TOKEN_SEED",type:"bytes",value:"[102]"},{name:"COLLATERAL_TOKEN_SEED",type:"bytes",value:"[104]"},{name:"LENDER_LENDING_BLOCK_HEIGHT_TOKEN_SEED",type:"bytes",value:"[105]"},{name:"LENDING_AUTHORITY_SEED",type:"bytes",value:"[100]"},{name:"LENDING_TOKEN_SEED",type:"bytes",value:"[101]"},{name:"LIQUIDITY_SEED",type:"bytes",value:"[98]"},{name:"MINIMUM_LIQUIDITY",type:"u64",value:"100"},{name:"MIN_COLLATERAL_RATIO_BASE",type:"u64",value:"10000"}],j={address:Le,metadata:Ee,instructions:Ie,accounts:Ce,errors:Re,types:De,constants:Fe};async function Me(o,i,t){try{const c=new C(i,o,{preflightCommitment:"confirmed"}),a=new R(j,c),[n]=m.findProgramAddressSync([t.toBuffer()],a.programId);return await a.methods.createAmm(t).accounts({amm:n,admin:c.wallet.publicKey,payer:c.wallet.publicKey,systemProgram:T.programId}).rpc()}catch(c){throw console.error("Error details:",c),c}}const qe=()=>{const o=L(),{connection:i}=N(),[t,c]=g.useState(""),[a,n]=g.useState("500"),[s,l]=g.useState(!1),[d,p]=g.useState(""),u=async r=>{if(r.preventDefault(),c(""),l(!0),!o){c("Please connect your wallet first"),l(!1);return}const h=Number(a);if(h<1||h>1e4){c("Fee must be between 1 and 10000"),l(!1);return}try{const k=m.unique(),b=await Me(o,i,k);console.log(`Transaction URL: https://explorer.solana.com/tx/${b}`),p(k.toString()),n("500")}catch(k){console.error("Error creating AMM:",k),c(k instanceof Error?k.message:"Failed to create AMM. Please try again.")}finally{l(!1)}};return e.jsxs("div",{className:"create-amm-container",children:[t&&e.jsx("div",{className:"error-message",children:t}),d&&e.jsxs("div",{className:"success-message",children:["AMM created successfully! ID: ",d]}),e.jsx("form",{onSubmit:u,className:"form",children:e.jsx("button",{type:"submit",className:"submit-button",disabled:s||!o,children:s?"Creating...":"Create AMM"})})]})},Ke=async(o,i)=>{console.log("Getting AMM accounts connection:",i);const t=new C(i,o,{preflightCommitment:"confirmed"}),a=await new R(j,t).account.amm.all();for(const n of a)console.log("AMM Account Details:",{publicKey:n.publicKey.toString(),id:n.account.id.toString(),admin:n.account.admin.toString()});return a.map(n=>({pubkey:n.publicKey.toString(),ammid:n.account.id.toString()}))},pe=g.createContext(void 0),Oe=({children:o})=>{const[i,t]=g.useState(null);return e.jsx(pe.Provider,{value:{amm:i,setAmm:t},children:o})},le=()=>{const o=g.useContext(pe);if(!o)throw new Error("useAmm must be used within an AmmProvider");return o},We=()=>{const o=L(),{connection:i}=N(),[t,c]=g.useState([]),[a,n]=g.useState(!1),[s,l]=g.useState(""),{setAmm:d}=le(),p=async()=>{if(o){n(!0);try{const r=await Ke(o,i);c(r),r.length>0&&d(r[0])}catch(r){console.error("Error fetching AMMs:",r),l(r instanceof Error?r.message:"Failed to fetch AMMs")}finally{n(!1)}}};g.useEffect(()=>{p()},[o,i]);const u=r=>{d(r)};return e.jsxs("div",{className:"create-amm-container",children:[e.jsx("h2",{children:"Existing AMMs"}),s&&e.jsx("div",{className:"error-message",children:s}),a?e.jsx("div",{children:"Loading AMMs..."}):t.length===0?e.jsx("div",{className:"form-group",children:e.jsx("p",{children:"No AMMs found"})}):e.jsx("div",{className:"form-group",children:t.map(r=>e.jsxs("div",{className:"amm-item",onClick:()=>u(r),children:[e.jsxs("div",{className:"amm-details",children:[e.jsx("span",{className:"amm-label",children:"AMM Pubkey:"}),e.jsx("span",{className:"amm-value",children:r.pubkey})]}),e.jsxs("div",{className:"amm-details",children:[e.jsx("span",{className:"amm-label",children:"AMM ID:"}),e.jsxs("span",{className:"amm-value",children:[r.ammid," bps"]})]})]},r.pubkey))})]})};var ue;const Ge=(ue=j.constants.find(o=>o.name==="BASE_RATE"))==null?void 0:ue.value,M="a",ge="b",D="d",$="e",q="f",V="g",K="h",X="i",Y="j",me="GUXNPX5ci1Qj76MZe2aRJ33zK48VmT6gXVyR86CsF4T5";async function He(o,i,t,c,a,n){try{console.log("Step 1: Creating provider");const s=new C(i,o,{commitment:"confirmed",preflightCommitment:"confirmed"}),l=new R(j,s),[d]=m.findProgramAddressSync([t.toBuffer(),c.toBuffer(),a.toBuffer()],l.programId),[p]=m.findProgramAddressSync([t.toBuffer(),c.toBuffer(),a.toBuffer(),f.from(M)],l.programId),[u]=m.findProgramAddressSync([t.toBuffer(),c.toBuffer(),a.toBuffer(),f.from(ge)],l.programId),r=await _.token.associatedAddress({mint:c,owner:p}),h=await _.token.associatedAddress({mint:a,owner:p}),[k]=m.findProgramAddressSync([d.toBuffer(),f.from(D)],l.programId),[b]=m.findProgramAddressSync([d.toBuffer(),f.from($)],l.programId),[w]=m.findProgramAddressSync([d.toBuffer(),f.from(q)],l.programId),[y]=m.findProgramAddressSync([d.toBuffer(),f.from(K)],l.programId),x=await _.token.associatedAddress({mint:c,owner:k}),v=await _.token.associatedAddress({mint:a,owner:k}),[A]=m.findProgramAddressSync([d.toBuffer(),f.from(X)],l.programId),[P]=m.findProgramAddressSync([d.toBuffer(),f.from(Y)],l.programId),S=J.setComputeUnitLimit({units:1e6});console.log("Step 1: Creating pool...");let O="";await ee(i,d)?console.log("Pool already exists, skipping..."):(O=await l.methods.createPool(n).accounts({amm:t,mintA:c,mintB:a,pool:d,poolAuthority:p,mintLiquidity:u,poolAccountA:r,poolAccountB:h,payer:s.wallet.publicKey,tokenProgram:E,associatedTokenProgram:I,systemProgram:T.programId}).preInstructions([S]).rpc({commitment:"confirmed"}),await i.confirmTransaction(O,"confirmed"),console.log("Transaction signature:",O)),console.log("Step 2: Initializing lending pool...");let W="";await ee(i,x)?console.log("Lending pool 1 already initialized, skipping..."):(W=await l.methods.initLendingPool1().accounts({pool:d,mintA:c,mintB:a,lendingPoolAuthority:k,lendingPoolTokenA:x,lendingPoolTokenB:v,payer:s.wallet.publicKey,tokenProgram:E,associatedTokenProgram:I,systemProgram:T.programId,rent:Q}).rpc(),await i.confirmTransaction(W,"confirmed")),console.log("Step 3: Initializing lending pool...");let G="";await ee(i,b)?console.log("Lending pool 2 already initialized, skipping..."):(G=await l.methods.initLendingPool2().accounts({pool:d,lendingPoolAuthority:k,lendingReceiptTokenMint:b,borrowReceiptTokenMint:w,collateralReceiptTokenMint:y,payer:s.wallet.publicKey,tokenProgram:E,associatedTokenProgram:I,systemProgram:T.programId,rent:Q}).rpc(),await i.confirmTransaction(G,"confirmed")),console.log("Step 4: Initializing lending pool...");let U="";return await ee(i,A)?console.log("Lending pool 3 already initialized, skipping..."):(U=await l.methods.initLendingPool3().accounts({pool:d,lendingPoolAuthority:k,lenderLendingBlockHeightMint:A,borrowerBorrowBlockHeightMint:P,payer:s.wallet.publicKey,tokenProgram:E,associatedTokenProgram:I,systemProgram:T.programId,rent:Q}).rpc(),await i.confirmTransaction(U,"confirmed")),{tx:O,initTx1:W,initTx2:G,initTx3:U}}catch(s){console.error("Error",s)}return{tx:"",initTx1:"",initTx2:"",initTx3:""}}async function ee(o,i){return await o.getAccountInfo(i)!==null}const Ve=()=>{const o=L(),{connection:i}=N(),{amm:t}=le(),[c,a]=g.useState(""),[n,s]=g.useState(!1),[l,d]=g.useState(""),[p,u]=g.useState(!1),[r,h]=g.useState({mintA:"",mintB:"",fee:"500"}),k=async b=>{if(b.preventDefault(),a(""),d(""),s(!0),!o){a("Please connect your wallet first"),s(!1);return}if(!t){a("Please select an AMM first"),s(!1);return}try{const w=new m(t.pubkey),y=new m(r.mintA),x=new m(r.mintB),v=await He(o,i,w,y,x,Number(r.fee));d(v.toString()),h({mintA:"",mintB:"",fee:"500"}),u(!1)}catch(w){console.error("Error creating pool:",w),a(w instanceof Error?w.message:"Failed to create pool")}finally{s(!1)}};return p?e.jsxs("div",{className:"create-pool-form-container",children:[e.jsx("button",{className:"back-button",onClick:()=>u(!1),children:"← Back to Pool List"}),e.jsxs("div",{className:"create-pool-form",children:[e.jsx("h2",{className:"form-title",children:"Create New Pool"}),c&&e.jsx("div",{className:"error-message",children:c}),l&&e.jsxs("div",{className:"success-message",children:["Pool created successfully!",e.jsx("a",{href:`https://explorer.solana.com/tx/${l}`,target:"_blank",rel:"noopener noreferrer",children:"View transaction"})]}),e.jsxs("form",{onSubmit:k,className:"form",children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"AMM Pubkey:"}),e.jsx("input",{type:"text",value:t?t.pubkey:"",readOnly:!0,disabled:!0})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Token A Mint Address:"}),e.jsx("input",{type:"text",value:r.mintA,onChange:b=>h({...r,mintA:b.target.value}),placeholder:"Enter token A mint address",required:!0,disabled:n})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Token B Mint Address:"}),e.jsx("input",{type:"text",value:r.mintB,onChange:b=>h({...r,mintB:b.target.value}),placeholder:"Enter token B mint address",required:!0,disabled:n})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Fee (in basis points, 1-10000, default: 500 or 5%):"}),e.jsx("input",{type:"text",value:r.fee,onChange:b=>h({...r,fee:b.target.value}),placeholder:"500",required:!0,disabled:n})]}),e.jsx("button",{type:"submit",className:"submit-button",disabled:n||!o,children:n?"Creating...":"Create Pool"})]})]})]}):e.jsx("div",{className:"create-pool-button-wrapper",children:e.jsx("button",{className:"create-pool-button",onClick:()=>u(!0),children:e.jsxs("div",{className:"button-content",children:[e.jsx("span",{className:"plus-icon",children:"+"}),e.jsx("span",{className:"button-text",children:"Create Pool"})]})})})};async function de(o,i){try{const t=new C(i,o,{preflightCommitment:"confirmed"});return(await new R(j,t).account.pool.all()).map(n=>({pubkey:n.publicKey.toString(),amm:n.account.amm.toString(),mintA:n.account.mintA.toString(),mintB:n.account.mintB.toString(),fee:n.account.fee.toString(),minCollateralRatio:n.account.minCollateralRatio.toString(),tokenAAmount:n.account.tokenAAmount.toString(),tokenBAmount:n.account.tokenBAmount.toString()}))}catch(t){throw console.error("Error fetching pool accounts:",t),t}}async function ne(o,i,t){try{const c=new m(i.pubkey),a=new m(i.mintA),n=new m(i.mintB),[s]=m.findProgramAddressSync([new m(i.amm).toBuffer(),new m(i.mintA).toBuffer(),new m(i.mintB).toBuffer(),f.from(M)],new m(j.address)),l=await B(new m(i.mintA),s,!0),d=await B(new m(i.mintB),s,!0),[p]=m.findProgramAddressSync([c.toBuffer(),t.toBuffer(),f.from(V)],new m(j.address)),u=await F(o,l),r=await F(o,d),h=Number(u.amount),k=Number(r.amount),b=k/h,w=h/k,[y]=m.findProgramAddressSync([c.toBuffer(),f.from(D)],new m(j.address)),[x]=m.findProgramAddressSync([c.toBuffer(),f.from($)],new m(j.address)),[v]=m.findProgramAddressSync([c.toBuffer(),f.from(q)],new m(j.address)),[A]=m.findProgramAddressSync([c.toBuffer(),f.from(K)],new m(j.address)),P=await B(a,y,!0),S=await B(n,y,!0),O=await F(o,P),W=await F(o,S),G=await ae(o,x),U=await ae(o,v),ke=await ae(o,A);console.log("walletPublicKey",t);const fe=await H(a,t,!0),be=await B(n,t,!0),we=await F(o,fe),ye=await F(o,be),_e=await re(o,p,x),xe=await re(o,p,v),ve=await re(o,p,A);return{pool:{aToB:b,bToA:w,tokenAAmount:h,tokenBAmount:k},lendingPool:{tokenAAmount:Number(O.amount),tokenBAmount:Number(W.amount),lendingReceiptSupply:Number(G.supply),borrowReceiptSupply:Number(U.supply),collateralReceiptSupply:Number(ke.supply),addresses:{lendingReceipt:x.toString(),borrowReceipt:v.toString(),collateralReceipt:A.toString()}},userAssets:{tokenAAmount:we.amount.toString(),tokenBAmount:ye.amount.toString(),lendingReceiptAmount:_e.toString(),borrowReceiptAmount:xe.toString(),collateralReceiptAmount:ve.toString()}}}catch(c){throw console.error("Error getting lending pool details:",c),c}}async function re(o,i,t){try{const c=await B(t,i,!0),a=await F(o,c);return Number(a.amount)}catch(c){return console.log("getUserTokenAmount",c),0}}async function Ue(o,i,t,c,a,n,s,l,d){try{const p=new C(i,o,{preflightCommitment:"confirmed"}),u=new R(j,p),[r]=m.findProgramAddressSync([c.toBuffer(),a.toBuffer(),n.toBuffer(),f.from(M)],u.programId),h=await B(a,r,!0),k=await B(n,r,!0),b=await B(a,o.publicKey,!0),w=await B(n,o.publicKey,!0);return await u.methods.swapExactTokensForTokens(s,new oe.BN(l),new oe.BN(d)).accounts({amm:c,pool:t,poolAuthority:r,trader:o.publicKey,mintA:a,mintB:n,poolAccountA:h,poolAccountB:k,traderAccountA:b,traderAccountB:w,payer:o.publicKey,tokenProgram:E,associatedTokenProgram:I,systemProgram:T.programId}).rpc()}catch(p){throw console.error("Error in swap:",p),p}}const Qe=({pool:o,onSuccess:i})=>{const t=L(),{connection:c}=N(),[a,n]=g.useState(!1),[s,l]=g.useState(""),[d,p]=g.useState(!0),[u,r]=g.useState({inputAmount:"",minOutputAmount:""}),h=async k=>{k.preventDefault(),l(""),n(!0);try{const b=parseFloat(u.inputAmount),w=parseFloat(u.minOutputAmount),y=await Ue(t,c,new m(o.pubkey),new m(o.amm),new m(o.mintA),new m(o.mintB),d,b,w);i(y),r({inputAmount:"",minOutputAmount:""})}catch(b){console.error("Error in swap:",b),l(b instanceof Error?b.message:"Failed to swap")}finally{n(!1)}};return e.jsxs("form",{onSubmit:h,className:"swap-form",children:[s&&e.jsx("div",{className:"error-message",children:s}),e.jsx("div",{className:"form-group",children:e.jsxs("div",{className:"swap-direction",children:[e.jsx("button",{type:"button",className:`direction-button ${d?"active":""}`,onClick:()=>p(!0),children:"A → B"}),e.jsx("button",{type:"button",className:`direction-button ${d?"":"active"}`,onClick:()=>p(!1),children:"B → A"})]})}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Input Amount:"}),e.jsx("input",{type:"number",step:"any",value:u.inputAmount,onChange:k=>r({...u,inputAmount:k.target.value}),placeholder:`Enter amount for token ${d?"A":"B"}`,required:!0,disabled:a})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Minimum Output Amount:"}),e.jsx("input",{type:"number",step:"any",value:u.minOutputAmount,onChange:k=>r({...u,minOutputAmount:k.target.value}),placeholder:`Minimum amount of token ${d?"B":"A"}`,required:!0,disabled:a})]}),e.jsx("button",{type:"submit",className:"submit-button",disabled:a||!t,children:a?"Swapping...":"Swap"})]})};async function Ze(o,i,t,c,a,n,s,l){try{const d=new C(i,o,{preflightCommitment:"confirmed"}),p=new R(j,d),[u]=m.findProgramAddressSync([c.toBuffer(),a.toBuffer(),n.toBuffer(),f.from(M)],p.programId),[r]=m.findProgramAddressSync([t.toBuffer(),f.from(ge)],p.programId),h=await B(a,u,!0),k=await B(n,u,!0),b=await B(a,o.publicKey,!0),w=await B(n,o.publicKey,!0),y=await B(r,o.publicKey,!0);return await p.methods.depositLiquidity(new oe.BN(s),new oe.BN(l)).accounts({pool:t,poolAuthority:u,mintA:a,mintB:n,depositor:o.publicKey,mintLiquidity:r,poolAccountA:h,poolAccountB:k,depositorAccountLiquidity:y,depositorAccountA:b,depositorAccountB:w,payer:o.publicKey,tokenProgram:E,associatedTokenProgram:I,systemProgram:T.programId}).rpc({skipPreflight:!1,maxRetries:3,commitment:"confirmed"})}catch(d){throw console.error("Error in depositLiquidity:",d),d}}const Je=({pool:o,onSuccess:i})=>{const t=L(),{connection:c}=N(),[a,n]=g.useState(!1),[s,l]=g.useState(""),[d,p]=g.useState({amountA:"",amountB:""}),u=async r=>{r.preventDefault(),l(""),n(!0);try{const h=parseFloat(d.amountA),k=parseFloat(d.amountB),b=await Ze(t,c,new m(o.pubkey),new m(o.amm),new m(o.mintA),new m(o.mintB),h,k);i(b),p({amountA:"",amountB:""})}catch(h){console.error("Error depositing liquidity:",h),l(h instanceof Error?h.message:"Failed to deposit liquidity")}finally{n(!1)}};return e.jsxs("form",{onSubmit:u,className:"deposit-form",children:[s&&e.jsx("div",{className:"error-message",children:s}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Amount Token A:"}),e.jsx("input",{type:"number",step:"any",value:d.amountA,onChange:r=>p({...d,amountA:r.target.value}),placeholder:"Enter amount for token A",required:!0,disabled:a})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Amount Token B:"}),e.jsx("input",{type:"number",step:"any",value:d.amountB,onChange:r=>p({...d,amountB:r.target.value}),placeholder:"Enter amount for token B",required:!0,disabled:a})]}),e.jsx("button",{type:"submit",className:"submit-button",disabled:a||!t,children:a?"Depositing...":"Confirm Deposit"})]})};async function ze(o,i,t,c){try{const a=new C(i,o,{commitment:"confirmed",preflightCommitment:"confirmed"}),n=new R(j,a),[s]=m.findProgramAddressSync([t.toBuffer(),f.from(D)],n.programId),[l]=m.findProgramAddressSync([t.toBuffer(),f.from(K)],n.programId),d=await _.token.associatedAddress({mint:c,owner:s}),[p]=m.findProgramAddressSync([t.toBuffer(),f.from(X)],n.programId);return console.log("Step 1: Initializing lending pool..."),await ie(i,d)?(console.log("Step 2: Initializing lending pool..."),await ie(i,l)?(console.log("Step 3: Initializing lending pool..."),await ie(i,p)?{isCreditPoolInitialized:!0}:{isCreditPoolInitialized:!1}):{isCreditPoolInitialized:!1}):{isCreditPoolInitialized:!1}}catch(a){console.error("Error",a)}return{isCreditPoolInitialized:!1}}async function ie(o,i){return await o.getAccountInfo(i)!==null}async function $e(o,i,t,c,a){try{const n=new C(i,o,{commitment:"confirmed",preflightCommitment:"confirmed"}),s=new R(j,n),[l]=m.findProgramAddressSync([t.toBuffer(),f.from(D)],s.programId),[d]=m.findProgramAddressSync([t.toBuffer(),f.from($)],s.programId),[p]=m.findProgramAddressSync([t.toBuffer(),f.from(q)],s.programId),[u]=m.findProgramAddressSync([t.toBuffer(),f.from(K)],s.programId),r=await _.token.associatedAddress({mint:c,owner:l}),h=await _.token.associatedAddress({mint:a,owner:l}),[k]=m.findProgramAddressSync([t.toBuffer(),f.from(X)],s.programId),[b]=m.findProgramAddressSync([t.toBuffer(),f.from(Y)],s.programId),w=J.setComputeUnitLimit({units:1e6});console.log("Step 1: Initializing lending pool...");let y="";await ce(i,r)?console.log("Lending pool 1 already initialized, skipping..."):(y=await s.methods.initLendingPool1().accounts({pool:t,mintA:c,mintB:a,lendingPoolAuthority:l,lendingPoolTokenA:r,lendingPoolTokenB:h,payer:n.wallet.publicKey,tokenProgram:E,associatedTokenProgram:I,systemProgram:T.programId,rent:Q}).preInstructions([w]).rpc({commitment:"confirmed"}),await i.confirmTransaction(y,"confirmed")),console.log("Step 2: Initializing lending pool...");let x="";await ce(i,u)?console.log("Lending pool 2 already initialized, skipping..."):(x=await s.methods.initLendingPool2().accounts({pool:t,lendingPoolAuthority:l,lendingReceiptTokenMint:d,borrowReceiptTokenMint:p,collateralReceiptTokenMint:u,payer:n.wallet.publicKey,tokenProgram:E,associatedTokenProgram:I,systemProgram:T.programId,rent:Q}).preInstructions([w]).rpc({commitment:"confirmed"}),await i.confirmTransaction(x,"confirmed")),console.log("Step 3: Initializing lending pool...");let v="";return await ce(i,k)?console.log("Lending pool 3 already initialized, skipping..."):(v=await s.methods.initLendingPool3().accounts({pool:t,lendingPoolAuthority:l,lenderLendingBlockHeightMint:k,borrowerBorrowBlockHeightMint:b,payer:n.wallet.publicKey,tokenProgram:E,associatedTokenProgram:I,systemProgram:T.programId,rent:Q}).preInstructions([w]).rpc({commitment:"confirmed"}),await i.confirmTransaction(v,"confirmed")),{initTx1:y,initTx2:x,initTx3:v}}catch(n){console.error("Error",n)}return{initTx1:"",initTx2:"",initTx3:""}}async function ce(o,i){return await o.getAccountInfo(i)!==null}const Xe=({pool:o,onSuccess:i})=>{const t=L(),{connection:c}=N(),{amm:a}=le(),[n,s]=g.useState(""),[l,d]=g.useState(!1),p=async()=>{if(s(""),d(!0),!t){s("Please connect your wallet first"),d(!1);return}if(!a){s("Please select an AMM first"),d(!1);return}try{const u=new m(o.pubkey),r=new m(o.mintA),h=new m(o.mintB),k=await $e(t,c,u,r,h);console.log(`Transaction URL: https://explorer.solana.com/tx/${k}`),i&&i(k.toString())}catch(u){console.error("Error initializing pool:",u),s(u instanceof Error?u.message:"Failed to initialize pool")}finally{d(!1)}};return e.jsxs("div",{className:"init-pool-container",children:[n&&e.jsx("div",{className:"error-message",children:n}),e.jsx("button",{onClick:p,className:"submit-button",disabled:l||!t,children:l?"Initializing...":"Initialize Pool"})]})},Ye=({pool:o})=>{const i=L(),{connection:t}=N(),[c,a]=g.useState(!1),[n,s]=g.useState(!1);return g.useEffect(()=>{(async()=>{try{if(!i)return;const d=new m(o.pubkey),p=await ze(i,t,d,o.mintA);a(p.isCreditPoolInitialized)}catch(d){console.error("Error checking credit pool:",d)}})()},[t,o,i]),c?null:e.jsxs("div",{className:"init-pool-section",children:[e.jsx("button",{className:"action-button",onClick:()=>s(!n),children:n?"Hide Init Pool":"Init Pool"}),n&&e.jsx(Xe,{pool:o,onSuccess:()=>{s(!1),a(!0)}})]})},eo=({pool:o,onTxSuccess:i})=>{const{connection:t}=N(),{publicKey:c}=z(),[a,n]=g.useState("none"),[s,l]=g.useState(null),[d,p]=g.useState(!1),u=async()=>{try{p(!0);const r=await ne(t,{pubkey:o.pubkey.toString(),amm:o.amm.toString(),mintA:o.mintA.toString(),mintB:o.mintB.toString()},c||new m(""));l(r)}catch(r){console.error("Error fetching pool prices:",r)}finally{p(!1)}};return g.useEffect(()=>{u()},[o,t,c]),e.jsxs("div",{className:"pool-item",children:[e.jsx(Ye,{pool:o}),e.jsx("div",{className:"pool-header",children:e.jsx("h3",{children:"Pool Details"})}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"AMM Pubkey:"}),e.jsx("span",{className:"pool-value",title:o.amm.toString(),children:o.amm.toString()})]}),e.jsx("div",{className:"pool-info",children:e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Pool Pubkey:"}),e.jsx("span",{className:"pool-value",title:o.pubkey.toString(),children:o.pubkey.toString()})]})}),e.jsxs("div",{className:"pool-price-info",children:[e.jsx("h4",{children:"Pool Liquidity & Prices"}),d?e.jsx("div",{className:"loading-prices",children:"Loading prices..."}):s?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Token A Reserve:"}),e.jsx("span",{className:"pool-value",children:s.pool.tokenAAmount.toFixed(6)})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Token B Reserve:"}),e.jsx("span",{className:"pool-value",children:s.pool.tokenBAmount.toFixed(6)})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Price (A → B):"}),e.jsxs("span",{className:"pool-value",children:["1 A = ",s.pool.aToB.toFixed(6)," B"]})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Price (B → A):"}),e.jsxs("span",{className:"pool-value",children:["1 B = ",s.pool.bToA.toFixed(6)," A"]})]})]}):e.jsx("div",{className:"error-message",children:"Failed to load prices"})]}),e.jsxs("div",{className:"pool-actions",children:[e.jsx("button",{className:"action-button",onClick:()=>n(a==="deposit"?"none":"deposit"),children:a==="deposit"?"Hide Deposit":"Deposit"}),e.jsx("button",{className:"action-button",onClick:()=>n(a==="swap"?"none":"swap"),children:a==="swap"?"Hide Swap":"Swap"})]}),a==="deposit"&&e.jsx("div",{className:"form-container",children:e.jsx(Je,{pool:o,onSuccess:r=>{i(r),n("none"),u()}})}),a==="swap"&&e.jsx("div",{className:"form-container",children:e.jsx(Qe,{pool:o,onSuccess:r=>{i(r),n("none"),u()}})})]})},oo=()=>{const o=L(),{connection:i}=N(),[t,c]=g.useState([]),[a,n]=g.useState(!0),[s,l]=g.useState(null),[d,p]=g.useState(""),u=async()=>{try{n(!0);const r=await de(o,i);c(r)}catch(r){console.error("Error fetching pools:",r)}finally{n(!1)}};return g.useEffect(()=>{u()},[i,d]),a?e.jsxs("div",{className:"pool-list-loading",children:[e.jsx("div",{className:"loading-spinner"}),e.jsx("p",{children:"Loading pools..."})]}):s?e.jsxs("div",{className:"pool-detail-view",children:[e.jsx("button",{className:"back-button",onClick:()=>l(null),children:"← Back to Pool List"}),e.jsx(eo,{pool:s,onTxSuccess:r=>{p(r),u()}})]}):e.jsxs("div",{className:"pool-list-container",children:[e.jsx("h2",{className:"pool-list-title",children:"Available Pools"}),t.length===0?e.jsx("div",{className:"no-pools-message",children:"No pools available"}):e.jsx("div",{className:"pool-list",children:t.map(r=>e.jsxs("div",{className:"pool-list-item",onClick:()=>l(r),children:[e.jsxs("div",{className:"pool-tokens",children:[e.jsxs("div",{className:"token-info",children:[e.jsx("span",{className:"token-label",children:"Token A:"}),e.jsxs("span",{className:"token-address",title:r.mintA.toString(),children:[r.mintA.toString().slice(0,4),"...",r.mintA.toString().slice(-4)]})]}),e.jsx("div",{className:"token-separator",children:"⟷"}),e.jsxs("div",{className:"token-info",children:[e.jsx("span",{className:"token-label",children:"Token B:"}),e.jsxs("span",{className:"token-address",title:r.mintB.toString(),children:[r.mintB.toString().slice(0,4),"...",r.mintB.toString().slice(-4)]})]})]}),e.jsx("div",{className:"pool-view-details",children:"View Details →"})]},r.pubkey.toString()))})]})};async function to(o,i,t,c){try{console.log("Executing liquidate...");const a=new C(i,o,{preflightCommitment:"confirmed"}),n=new R(j,a),s=await n.account.pool.fetch(t),l=s.mintA,d=s.mintB,[p]=m.findProgramAddressSync([s.amm.toBuffer(),l.toBuffer(),d.toBuffer(),f.from(M)],n.programId),[u]=m.findProgramAddressSync([t.toBuffer(),f.from(D)],n.programId),[r]=m.findProgramAddressSync([t.toBuffer(),f.from(q)],n.programId),[h]=m.findProgramAddressSync([t.toBuffer(),f.from(K)],n.programId),[k]=m.findProgramAddressSync([t.toBuffer(),c.toBuffer(),f.from(V)],n.programId),b=await _.token.associatedAddress({mint:r,owner:k}),w=await _.token.associatedAddress({mint:h,owner:k}),y=H(d,a.wallet.publicKey,!0),x=J.setComputeUnitLimit({units:2e8});console.log("Sending liquidate transaction...");const v=await n.methods.liquidate().accounts({pool:t,poolAuthority:p,mintA:l,mintB:d,lendingPoolAuthority:u,borrowReceiptTokenMint:r,collateralReceiptTokenMint:h,trader:a.wallet.publicKey,traderAccountB:y,borrower:c,borrowerBorrowReceiptToken:b,borrowerCollateralReceiptToken:w,payer:a.wallet.publicKey,tokenProgram:E,associatedTokenProgram:I,systemProgram:T.programId}).preInstructions([x]).rpc();return console.log("Liquidate transaction signature:",v),{tx:v,accounts:{poolKey:t,poolAuthority:p,lendingPoolAuthority:u,borrowReceiptTokenMint:r,collateralReceiptTokenMint:h,traderAccountB:y,borrowerBorrowReceiptToken:b,borrowerCollateralReceiptToken:w}}}catch(a){throw console.error("Error in liquidate:",a),a instanceof Error&&console.error("Error details:",{message:a.message,stack:a.stack}),a}}async function no(o,i,t){try{const c=new C(t,o,{preflightCommitment:"confirmed"}),a=new R(j,c),n=await a.account.pool.fetch(i),s=n.mintA,l=n.mintB,p=(await ne(t,{pubkey:i.toString(),amm:n.amm.toString(),mintA:s.toString(),mintB:l.toString()},o.publicKey)).pool.aToB,[u]=m.findProgramAddressSync([i.toBuffer(),f.from(q)],a.programId),[r]=m.findProgramAddressSync([i.toBuffer(),f.from(K)],a.programId),h=await t.getTokenLargestAccounts(u),k=[];for(const b of h.value){if(b.amount=="0")continue;const w=await F(t,b.address),y=w.owner,x=await ao(t,y,r);console.log("borrowReceiptToken amount",w.amount.toString()),console.log("collateralReceiptTokenAmount",x),console.log("Number(borrowTokenAccountInfo.amount) * 2*poolPrice",Number(w.amount)*2*p),x{const o=L(),{connection:i}=N(),[t,c]=g.useState(""),[a,n]=g.useState(!1),[s,l]=g.useState(""),[d,p]=g.useState(""),[u,r]=g.useState(""),[h,k]=g.useState([]),[b,w]=g.useState(!1),y=async v=>{if(v.preventDefault(),!o||!s){c("Please connect wallet and enter pool address");return}try{c(""),w(!0);const A=new m(s),P=await no(o,A,i);k(P)}catch(A){console.error("Error fetching pending liquidations:",A),c(A instanceof Error?A.message:"Failed to fetch pending liquidations"),k([])}finally{w(!1)}},x=async v=>{if(v.preventDefault(),c(""),n(!0),!o){c("Please connect your wallet first"),n(!1);return}let A,P;try{A=new m(s),P=new m(d)}catch{c("Invalid pool or borrower address"),n(!1);return}try{const S=await to(o,i,A,P);console.log(`Transaction URL: https://explorer.solana.com/tx/${S.tx}`),r(S.tx),l(""),p("")}catch(S){console.error("Error liquidating position:",S),c(S instanceof Error?S.message:"Failed to liquidate. Please try again.")}finally{n(!1)}};return e.jsxs("div",{className:"liquidate-container",children:[t&&e.jsx("div",{className:"error-message",children:t}),u&&e.jsxs("div",{className:"success-message",children:["Liquidation successful!",e.jsx("a",{href:`https://explorer.solana.com/tx/${u}`,target:"_blank",rel:"noopener noreferrer",children:"View transaction"})]}),e.jsxs("div",{className:"search-form",children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"pool-address",children:"Pool Address:"}),e.jsxs("div",{className:"input-with-button",children:[e.jsx("input",{id:"pool-address",type:"text",value:s,onChange:v=>l(v.target.value),placeholder:"Enter pool address",className:"input-field"}),e.jsx("button",{onClick:y,disabled:b||!o||!s,className:"search-button",children:b?"Searching...":"Search"})]})]}),e.jsxs("div",{className:"pending-liquidations",children:[e.jsx("h3",{children:"Pending Liquidations"}),b?e.jsx("div",{className:"loading",children:"Loading pending liquidations..."}):h.length===0?e.jsx("p",{children:"No pending liquidations found"}):e.jsx("ul",{className:"liquidation-list",children:h.map((v,A)=>e.jsx("li",{className:"liquidation-item",onClick:()=>p(v.userAuthorityPda.toString()),children:e.jsxs("div",{children:["Borrower Authority PDA: ",v.userAuthorityPda.toString()]})},A))})]})]}),e.jsxs("form",{onSubmit:x,className:"liquidate-form",children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{htmlFor:"borrower-address",children:"Note: The current demo does not yet support liquidation based on PDAs. The public key is not the same as the PDA. So the PDA above is useless now. U'd better to use another account to borrow and then liquidate that account with it's Public Key."}),e.jsx("label",{htmlFor:"borrower-address",children:"Borrower Address:"}),e.jsx("input",{id:"borrower-address",type:"text",value:d,onChange:v=>p(v.target.value),placeholder:"Enter borrower address",className:"input-field"})]}),e.jsx("button",{type:"submit",className:"submit-button",disabled:a||!o||!s||!d,children:a?"Liquidating...":"Liquidate Position"})]})]})};async function ro(o,i,t,c){try{console.log("Executing lend...");const a=new C(i,o,{preflightCommitment:"confirmed"}),n=new R(j,a),s=await n.account.pool.fetch(t),l=s.mintA,d=s.mintB,[p]=m.findProgramAddressSync([s.amm.toBuffer(),l.toBuffer(),d.toBuffer(),f.from(M)],n.programId),[u]=m.findProgramAddressSync([t.toBuffer(),f.from(D)],n.programId),[r]=m.findProgramAddressSync([t.toBuffer(),f.from($)],n.programId),[h]=m.findProgramAddressSync([t.toBuffer(),f.from(q)],n.programId),[k]=m.findProgramAddressSync([t.toBuffer(),f.from(X)],n.programId),b=H(l,u,!0),w=H(d,u,!0),y=await _.token.associatedAddress({mint:l,owner:a.wallet.publicKey}),[x]=m.findProgramAddressSync([t.toBuffer(),a.wallet.publicKey.toBuffer(),f.from(V)],n.programId),v=await _.token.associatedAddress({mint:r,owner:x}),A=await _.token.associatedAddress({mint:k,owner:x});return{tx:await n.methods.lend(new te(c)).accounts({pool:t,lendingPoolAuthority:u,lendingPoolTokenA:b,lendingReceiptTokenMint:r,lenderLendingBlockHeightMint:k,lender:a.wallet.publicKey,lenderTokenA:y,lenderAuthority:x,lenderLendReceiptToken:v,lenderLendingBlockHeightReceiptToken:A,payer:a.wallet.publicKey,tokenProgram:E,associatedTokenProgram:I,systemProgram:T.programId}).rpc(),accounts:{poolAuthority:p,lendingPoolAuthority:u,lendingReceiptTokenMint:r,borrowReceiptTokenMint:h,lendingPoolTokenA:b,lendingPoolTokenB:w,lenderTokenA:y,lenderLendReceiptToken:v,lenderLendingBlockHeightReceiptToken:A}}}catch(a){throw console.error("Error in lend:",a),a instanceof Error&&console.error("Error details:",{message:a.message,stack:a.stack}),a}}const io=({pool:o,onSuccess:i})=>{const t=L(),{connection:c}=N(),[a,n]=g.useState(""),[s,l]=g.useState(!1),[d,p]=g.useState(""),u=async r=>{if(r.preventDefault(),n(""),l(!0),!t){n("Please connect your wallet first"),l(!1);return}try{const h=parseFloat(d);if(isNaN(h)||h<=0)throw new Error("Invalid amount");const k=new m(o.pubkey),b=await ro(t,c,k,new te(h));console.log(`Transaction URL: https://explorer.solana.com/tx/${b.tx}`),p(""),i(b.tx)}catch(h){console.error("Error lending:",h),n(h instanceof Error?h.message:"Failed to lend")}finally{l(!1)}};return console.log(o),e.jsxs("div",{className:"form-wrapper",children:[e.jsx("h3",{children:"Lend Tokens"}),a&&e.jsx("div",{className:"error-message",children:a}),e.jsxs("form",{onSubmit:u,children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Amount to Lend:"}),e.jsx("input",{type:"number",value:d,onChange:r=>p(r.target.value),placeholder:"Enter amount to lend",required:!0,min:"0",step:"any",disabled:s})]}),e.jsxs("div",{className:"lendingPool-info-summary",children:[e.jsxs("div",{children:["Pool: ",o.pubkey.toString()]}),e.jsxs("div",{children:["Token A: ",o.mintA.toString()]}),e.jsxs("div",{children:["Token B: ",o.mintB.toString()]})]}),e.jsx("button",{type:"submit",className:"action-button",disabled:s||!t,children:s?"Processing...":"Confirm Lend"})]})]})};async function co(o,i,t){try{const c=new C(i,o,{preflightCommitment:"confirmed"}),a=new R(j,c),n=await a.account.pool.fetch(t),s=n.mintA,l=n.mintB,[d]=m.findProgramAddressSync([n.amm.toBuffer(),s.toBuffer(),l.toBuffer(),f.from(M)],a.programId),[p]=m.findProgramAddressSync([t.toBuffer(),f.from(D)],a.programId),u=await _.token.associatedAddress({mint:s,owner:p}),r=await _.token.associatedAddress({mint:l,owner:p}),[h]=m.findProgramAddressSync([t.toBuffer(),f.from($)],a.programId),[k]=m.findProgramAddressSync([t.toBuffer(),f.from(q)],a.programId),[b]=m.findProgramAddressSync([t.toBuffer(),f.from(X)],a.programId),w=await _.token.associatedAddress({mint:s,owner:c.wallet.publicKey}),y=await _.token.associatedAddress({mint:l,owner:c.wallet.publicKey}),[x]=m.findProgramAddressSync([t.toBuffer(),c.wallet.publicKey.toBuffer(),f.from(V)],a.programId),v=await _.token.associatedAddress({mint:h,owner:x}),A=await _.token.associatedAddress({mint:b,owner:x});console.log("Sending redeem transaction...");const P=await a.methods.redeem().accounts({pool:t,poolAuthority:d,mintA:s,mintB:l,lendingPoolAuthority:p,lendingPoolTokenA:u,lendingPoolTokenB:r,lendingReceiptTokenMint:h,borrowReceiptTokenMint:k,lenderLendingBlockHeightTokenMint:b,lender:c.wallet.publicKey,lenderTokenA:w,lenderTokenB:y,lenderLendingReceiptToken:v,lenderLendingBlockHeightReceiptToken:A,payer:c.wallet.publicKey,tokenProgram:E,associatedTokenProgram:I,systemProgram:T.programId}).rpc();return console.log("Redeem transaction signature:",P),P}catch(c){throw console.error("Error in redeem:",c),c}}const lo=({pool:o,onSuccess:i})=>{const t=L(),{connection:c}=N(),[a,n]=g.useState(""),[s,l]=g.useState(!1),d=async p=>{if(p.preventDefault(),n(""),l(!0),!t){n("Please connect your wallet first"),l(!1);return}try{const u=new m(o.pubkey),r=await co(t,c,u);console.log(`Transaction URL: https://explorer.solana.com/tx/${r}`),i(r)}catch(u){console.error("Error redeeming:",u),n(u instanceof Error?u.message:"Failed to redeem")}finally{l(!1)}};return e.jsxs("div",{className:"form-wrapper",children:[e.jsx("h3",{children:"Redeem Tokens"}),a&&e.jsx("div",{className:"error-message",children:a}),e.jsxs("form",{onSubmit:d,children:[e.jsxs("div",{className:"lending-pool-info-summary",children:[e.jsxs("div",{children:["Min Collateral Ratio: ",(o.minCollateralRatio/100).toFixed(2),"%"]}),e.jsxs("div",{children:["Base Rate: ",Ge,"%"]})]}),e.jsx("div",{className:"warning-message",children:"Note: This will redeem all your lending receipt tokens."}),e.jsx("button",{type:"submit",className:"action-button",disabled:s||!t,children:s?"Processing...":"Confirm Redeem"})]})]})},mo=({pool:o,onTxSuccess:i})=>{const{connection:t}=N(),{publicKey:c}=z(),[a,n]=g.useState("none"),[s,l]=g.useState(null),[d,p]=g.useState(!1),u=async()=>{try{p(!0);const r=await ne(t,{pubkey:o.pubkey.toString(),amm:o.amm.toString(),mintA:o.mintA.toString(),mintB:o.mintB.toString()},c||new m(""));l(r)}catch(r){console.error("Error fetching pool prices:",r)}finally{p(!1)}};return g.useEffect(()=>{u()},[o,t,c]),e.jsxs("div",{className:"pool-item",children:[e.jsx("div",{className:"pool-header",children:e.jsx("h3",{children:"Pool Details"})}),e.jsxs("div",{className:"pool-info",children:[e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Pool Pubkey:"}),e.jsx("span",{className:"pool-value",title:o.pubkey.toString(),children:o.pubkey.toString()})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Token A mint addr:"}),e.jsx("span",{className:"pool-value",title:o.mintA.toString(),children:o.mintA.toString()})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Token B mint addr:"}),e.jsx("span",{className:"pool-value",title:o.mintB.toString(),children:o.mintB.toString()})]})]}),e.jsxs("div",{className:"lending-pool-info",children:[e.jsx("h4",{children:"Lending Pool"}),d?e.jsx("div",{className:"loading-lending-pool-details",children:"Loading lending pool details..."}):s?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Lending Pool tokenAAmount:"}),e.jsx("span",{className:"pool-value",children:s.lendingPool.tokenAAmount.toFixed(6)})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Lending Pool tokenBAmount:"}),e.jsx("span",{className:"pool-value",children:s.lendingPool.tokenBAmount.toFixed(6)})]})]}):e.jsx("div",{className:"error-message",children:"Failed to load lending pool details"})]}),e.jsxs("div",{className:"user-assets-details",children:[e.jsx("h4",{children:"Your Assets"}),d?e.jsx("div",{className:"loading-lending-pool-details",children:"Loading lending pool details..."}):s?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"tokenA Balance:"}),e.jsx("span",{className:"pool-value",children:s.userAssets.tokenAAmount})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"tokenB Balance:"}),e.jsx("span",{className:"pool-value",children:s.userAssets.tokenBAmount})]})]}):e.jsx("div",{className:"error-message",children:"Failed to load lending pool details"})]}),e.jsxs("div",{className:"user-lending-details",children:[e.jsx("h4",{children:"Your lending details"}),d?e.jsx("div",{className:"loading-lending-pool-details",children:"Loading lending pool details..."}):s?e.jsx(e.Fragment,{children:e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"lended tokenB amount:"}),e.jsx("span",{className:"pool-value",children:s.userAssets.lendingReceiptAmount})]})}):e.jsx("div",{className:"error-message",children:"Failed to load lending pool details"})]}),e.jsx("div",{className:"lending-pool-actions",children:e.jsxs("div",{className:"lending-pool-action-buttons",children:[e.jsx("button",{className:"lending-pool-action-button",onClick:()=>n(a==="lend"?"none":"lend"),children:a==="lend"?"Hide Lend":"Lend"}),e.jsx("button",{className:"lending-pool-action-button",onClick:()=>n(a==="redeem"?"none":"redeem"),children:a==="redeem"?"Hide Redeem":"Redeem"})]})}),e.jsx("div",{className:"lending-pool-actions",children:e.jsx("button",{className:"lending-pool-refresh-button",onClick:u,disabled:d,children:d?"Loading...":"🔄 Refresh"})}),a==="lend"&&e.jsx("div",{className:"form-container",children:e.jsx(io,{pool:o,onSuccess:r=>{i(r),n("none"),u()}})}),a==="redeem"&&e.jsx("div",{className:"form-container",children:e.jsx(lo,{pool:o,onSuccess:r=>{i(r),n("none"),u()}})})]})},uo=()=>{const o=L(),{connection:i}=N(),[t,c]=g.useState([]),[a,n]=g.useState(!0),[s,l]=g.useState(null),[d,p]=g.useState(""),u=async()=>{try{if(n(!0),!o)return;const r=await de(o,i);c(r)}catch(r){console.error("Error fetching pools:",r)}finally{n(!1)}};return g.useEffect(()=>{u()},[i,o,d]),a?e.jsxs("div",{className:"pool-list-loading",children:[e.jsx("div",{className:"loading-spinner"}),e.jsx("p",{children:"Loading pools..."})]}):s?e.jsxs("div",{className:"pool-detail-view",children:[e.jsx("button",{className:"back-button",onClick:()=>l(null),children:"← Back to Pool List"}),e.jsx(mo,{pool:s,onTxSuccess:r=>{p(r),u()}})]}):e.jsxs("div",{className:"pool-list-container",children:[e.jsx("h2",{className:"pool-list-title",children:"Available Lending Pools"}),t.length===0?e.jsx("div",{className:"no-pools-message",children:"No pools available"}):e.jsx("div",{className:"pool-list",children:t.map(r=>e.jsxs("div",{className:"pool-list-item",onClick:()=>l(r),children:[e.jsxs("div",{className:"pool-tokens",children:[e.jsxs("div",{className:"token-info",children:[e.jsx("span",{className:"token-label",children:"Token A:"}),e.jsxs("span",{className:"token-address",title:r.mintA.toString(),children:[r.mintA.toString().slice(0,4),"...",r.mintA.toString().slice(-4)]})]}),e.jsx("div",{className:"token-separator",children:"⟷"}),e.jsxs("div",{className:"token-info",children:[e.jsx("span",{className:"token-label",children:"Token B:"}),e.jsxs("span",{className:"token-address",title:r.mintB.toString(),children:[r.mintB.toString().slice(0,4),"...",r.mintB.toString().slice(-4)]})]})]}),e.jsx("div",{className:"pool-view-details",children:"View Details →"})]},r.pubkey.toString()))})]})};async function po(o,i,t,c,a,n){try{console.log("Executing borrow...");const s=new C(i,o,{preflightCommitment:"confirmed"}),l=new R(j,s),d=await l.account.pool.fetch(t);console.log("Pool info:",{amm:d.amm.toString(),mintA:d.mintA.toString(),mintB:d.mintB.toString()});const[p]=m.findProgramAddressSync([d.amm.toBuffer(),c.toBuffer(),a.toBuffer(),f.from(M)],l.programId),[u]=m.findProgramAddressSync([t.toBuffer(),f.from(D)],l.programId),[r]=m.findProgramAddressSync([t.toBuffer(),f.from(q)],l.programId),[h]=m.findProgramAddressSync([t.toBuffer(),f.from(K)],l.programId),[k]=m.findProgramAddressSync([t.toBuffer(),f.from(Y)],l.programId),b=await _.token.associatedAddress({mint:c,owner:p}),w=await _.token.associatedAddress({mint:a,owner:p}),y=await _.token.associatedAddress({mint:c,owner:u}),x=await _.token.associatedAddress({mint:a,owner:u}),v=await _.token.associatedAddress({mint:c,owner:s.wallet.publicKey}),A=await _.token.associatedAddress({mint:a,owner:s.wallet.publicKey}),[P]=m.findProgramAddressSync([t.toBuffer(),s.wallet.publicKey.toBuffer(),f.from(V)],l.programId),S=await _.token.associatedAddress({mint:r,owner:P}),O=await _.token.associatedAddress({mint:h,owner:P}),W=await _.token.associatedAddress({mint:k,owner:P});console.log("Sending borrow transaction...");const G=J.setComputeUnitLimit({units:1e6});return await l.methods.borrow(n).accounts({pool:t,poolAuthority:p,mintA:c,mintB:a,poolAccountA:b,poolAccountB:w,lendingPoolAuthority:u,lendingPoolTokenA:y,lendingPoolTokenB:x,borrowReceiptTokenMint:r,collateralReceiptTokenMint:h,borrowerBorrowBlockHeightTokenMint:k,borrower:s.wallet.publicKey,borrowerTokenA:v,borrowerTokenB:A,borrowerBorrowReceiptToken:S,borrowerCollateralReceiptToken:O,borrowerBorrowBlockHeightReceiptToken:W,payer:s.wallet.publicKey,tokenProgram:E,associatedTokenProgram:I,systemProgram:T.programId}).preInstructions([G]).rpc()}catch(s){throw console.error("Error in borrow:",s),s instanceof Error&&console.error("Error details:",{message:s.message,stack:s.stack}),s}}const go=({pool:o,onSuccess:i})=>{const t=L(),{connection:c}=N(),[a,n]=g.useState(""),[s,l]=g.useState(!1),[d,p]=g.useState(""),u=async h=>{if(h.preventDefault(),n(""),l(!0),!t){n("Please connect your wallet first"),l(!1);return}try{const k=parseFloat(d);if(isNaN(k)||k<=0)throw new Error("Invalid borrow amount");const b=new m(o.pubkey),w=new m(o.mintA),y=new m(o.mintB),x=await po(t,c,b,w,y,new te(k));console.log(`Transaction URL: https://explorer.solana.com/tx/${x}`),p(""),i(x)}catch(k){console.error("Error borrowing:",k),n(k instanceof Error?k.message:"Failed to borrow")}finally{l(!1)}},r=(o.minCollateralRatio/100).toFixed(2);return e.jsxs("div",{className:"form-wrapper",children:[e.jsx("h3",{children:"Borrow Tokens"}),a&&e.jsx("div",{className:"error-message",children:a}),e.jsxs("form",{onSubmit:u,children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Amount to Borrow (Token A):"}),e.jsx("input",{type:"number",value:d,onChange:h=>p(h.target.value),placeholder:"Enter amount to borrow",required:!0,min:"0",step:"any",disabled:s})]}),e.jsxs("div",{className:"lending-pool-info-summary",children:[e.jsxs("div",{children:["Pool: ",o.pubkey.toString().slice(0,4),"...",o.pubkey.toString().slice(-4)]}),e.jsxs("div",{children:["Token A (Borrow): ",o.mintA.toString().slice(0,4),"...",o.mintA.toString().slice(-4)]}),e.jsxs("div",{children:["Token B (Collateral): ",o.mintB.toString().slice(0,4),"...",o.mintB.toString().slice(-4)]}),e.jsxs("div",{children:["Min Collateral Ratio: ",r,"%"]}),e.jsxs("div",{children:["Base Rate: ",(o.fee/100).toFixed(2),"%"]})]}),e.jsx("div",{className:"warning-message",children:"Note: Please ensure you provide sufficient collateral based on the minimum collateral ratio."}),e.jsx("button",{type:"submit",className:"action-button",disabled:s||!t,children:s?"Processing...":"Confirm Borrow"})]})]})};async function ho(o,i,t,c,a){try{console.log("Executing repay...");const n=new C(i,o,{preflightCommitment:"confirmed"}),s=new R(j,n),l=await s.account.pool.fetch(t),[d]=m.findProgramAddressSync([l.amm.toBuffer(),c.toBuffer(),a.toBuffer(),f.from(M)],s.programId),[p]=m.findProgramAddressSync([t.toBuffer(),f.from(D)],s.programId),[u]=m.findProgramAddressSync([t.toBuffer(),f.from(q)],s.programId),[r]=m.findProgramAddressSync([t.toBuffer(),f.from(K)],s.programId),h=await _.token.associatedAddress({mint:c,owner:p}),k=await _.token.associatedAddress({mint:a,owner:p}),b=await _.token.associatedAddress({mint:c,owner:n.wallet.publicKey}),w=await _.token.associatedAddress({mint:a,owner:n.wallet.publicKey}),[y]=m.findProgramAddressSync([t.toBuffer(),n.wallet.publicKey.toBuffer(),f.from(V)],s.programId),x=await _.token.associatedAddress({mint:u,owner:y}),v=await _.token.associatedAddress({mint:r,owner:y}),[A]=m.findProgramAddressSync([t.toBuffer(),f.from(Y)],s.programId),P=await _.token.associatedAddress({mint:A,owner:y});console.log("Sending repay transaction...");const S=await s.methods.repay().accounts({mintA:c,mintB:a,pool:t,poolAuthority:d,lendingPoolAuthority:p,lendingPoolTokenA:h,lendingPoolTokenB:k,borrowReceiptTokenMint:u,collateralReceiptTokenMint:r,borrowerBorrowBlockHeightMint:A,borrower:n.wallet.publicKey,borrowerTokenA:b,borrowerTokenB:w,borrowerAuthority:y,borrowerBorrowReceiptToken:x,borrowerCollateralReceiptToken:v,borrowerBorrowBlockHeightReceiptToken:P,payer:n.wallet.publicKey,tokenProgram:E,associatedTokenProgram:I,systemProgram:T.programId}).rpc();return console.log("Repay transaction signature:",S),S}catch(n){throw console.error("Error in repay:",n),n}}const ko=({pool:o,onSuccess:i})=>{const t=L(),{connection:c}=N(),[a,n]=g.useState(""),[s,l]=g.useState(!1),d=async p=>{if(p.preventDefault(),n(""),l(!0),!t){n("Please connect your wallet first"),l(!1);return}try{const u=new m(o.pubkey),r=new m(o.mintA),h=new m(o.mintB),k=await ho(t,c,u,r,h);console.log(`Transaction URL: https://explorer.solana.com/tx/${k}`),i(k)}catch(u){console.error("Error repaying:",u),n(u instanceof Error?u.message:"Failed to repay")}finally{l(!1)}};return e.jsxs("div",{className:"form-wrapper",children:[e.jsx("h3",{children:"Repay Loan"}),a&&e.jsx("div",{className:"error-message",children:a}),e.jsxs("form",{onSubmit:d,children:[e.jsx("div",{className:"form-group",children:e.jsx("div",{className:"info-message",children:"Repaying your loan will return your collateral proportionally."})}),e.jsx("button",{type:"submit",className:"action-button",disabled:s||!t,children:s?"Processing...":"Confirm Repay"})]})]})};async function fo(o,i,t,c,a){try{console.log("Executing borrow...");const n=new C(i,o,{preflightCommitment:"confirmed"}),s=new R(j,n),[l]=m.findProgramAddressSync([t.toBuffer(),f.from(D)],s.programId),d=await H(c,l,!0),[p]=m.findProgramAddressSync([t.toBuffer(),f.from(K)],s.programId),[u]=m.findProgramAddressSync([t.toBuffer(),f.from(Y)],s.programId),r=H(c,n.wallet.publicKey),[h]=m.findProgramAddressSync([t.toBuffer(),n.wallet.publicKey.toBuffer(),f.from(V)],s.programId),k=await H(p,h,!0),b=await _.token.associatedAddress({mint:u,owner:h});console.log("Sending borrow transaction...");const w=J.setComputeUnitLimit({units:1e6});return{tx:await s.methods.depositCollateral(a).accounts({pool:t,lendingPoolAuthority:l,lendingPoolTokenB:d,collateralReceiptTokenMint:p,borrowerBorrowBlockHeightTokenMint:u,borrower:n.wallet.publicKey,borrowerTokenB:r,borrowerAuthority:h,borrowerCollateralReceiptToken:k,borrowerBorrowBlockHeightReceiptToken:b,payer:n.wallet.publicKey,tokenProgram:E,associatedTokenProgram:I,systemProgram:T.programId}).preInstructions([w]).rpc()}}catch(n){throw console.error("Error in borrow:",n),n instanceof Error&&console.error("Error details:",{message:n.message,stack:n.stack}),n}}const bo=({pool:o,onSuccess:i})=>{const t=L(),{connection:c}=N(),[a,n]=g.useState(""),[s,l]=g.useState(!1),[d,p]=g.useState(""),u=async r=>{if(r.preventDefault(),n(""),l(!0),!t){n("Please connect your wallet first"),l(!1);return}try{const h=parseFloat(d);if(isNaN(h)||h<=0)throw new Error("Invalid amount");const k=new m(o.pubkey),b=new m(o.mintB),w=await fo(t,c,k,b,new te(h));console.log(`Transaction URL: https://explorer.solana.com/tx/${w.tx}`),p(""),i(w.tx)}catch(h){console.error("Error lending:",h),n(h instanceof Error?h.message:"Failed to lend")}finally{l(!1)}};return e.jsxs("div",{className:"form-wrapper",children:[e.jsx("h3",{children:"DepositCollateral Tokens"}),a&&e.jsx("div",{className:"error-message",children:a}),e.jsxs("form",{onSubmit:u,children:[e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"Amount to DepositCollateral:"}),e.jsx("input",{type:"number",value:d,onChange:r=>p(r.target.value),placeholder:"Enter amount of collateral to deposit",required:!0,min:"0",step:"any",disabled:s})]}),e.jsxs("div",{className:"lendingPool-info-summary",children:[e.jsxs("div",{children:["Pool: ",o.pubkey.toString()]}),e.jsxs("div",{children:["Token A: ",o.mintA.toString()]}),e.jsxs("div",{children:["Token B: ",o.mintB.toString()]})]}),e.jsx("button",{type:"submit",className:"action-button",disabled:s||!t,children:s?"Processing...":"Confirm DepositCollateral"})]})]})},wo=({pool:o,onTxSuccess:i})=>{const{connection:t}=N(),{publicKey:c}=z(),[a,n]=g.useState("none"),[s,l]=g.useState(null),[d,p]=g.useState(!1),u=async()=>{try{p(!0);const r=await ne(t,{pubkey:o.pubkey.toString(),amm:o.amm.toString(),mintA:o.mintA.toString(),mintB:o.mintB.toString()},c||new m(""));l(r)}catch(r){console.error("Error fetching pool prices:",r)}finally{p(!1)}};return g.useEffect(()=>{u()},[o,t,c]),e.jsxs("div",{className:"pool-item",children:[e.jsx("div",{className:"pool-header",children:e.jsx("h3",{children:"Pool Details"})}),e.jsxs("div",{className:"pool-info",children:[e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Pool Pubkey:"}),e.jsx("span",{className:"pool-value",title:o.pubkey.toString(),children:o.pubkey.toString()})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Token A mint addr:"}),e.jsx("span",{className:"pool-value",title:o.mintA.toString(),children:o.mintA.toString()})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Token B mint addr:"}),e.jsx("span",{className:"pool-value",title:o.mintB.toString(),children:o.mintB.toString()})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Min Collateral Ratio:"}),e.jsx("span",{className:"pool-value",title:o.minCollateralRatio.toString(),children:o.minCollateralRatio})]})]}),e.jsxs("div",{className:"pool-price-info",children:[e.jsx("h4",{children:"Prices"}),d?e.jsx("div",{className:"loading-prices",children:"Loading prices..."}):s?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"TokenA Amount:"}),e.jsx("span",{className:"pool-value",children:s.pool.tokenAAmount.toFixed(6)})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"TokenB Amount:"}),e.jsx("span",{className:"pool-value",children:s.pool.tokenBAmount.toFixed(6)})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Price (A → B):"}),e.jsxs("span",{className:"pool-value",children:["1 A = ",s.pool.aToB.toFixed(6)," B"]})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Price (B → A):"}),e.jsxs("span",{className:"pool-value",children:["1 B = ",s.pool.bToA.toFixed(6)," A"]})]})]}):e.jsx("div",{className:"error-message",children:"Failed to load prices"})]}),e.jsxs("div",{className:"lending-pool-info",children:[e.jsx("h4",{children:"Lending Pool"}),d?e.jsx("div",{className:"loading-lending-pool-details",children:"Loading lending pool details..."}):s?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Lending Pool tokenAAmount:"}),e.jsx("span",{className:"pool-value",children:s.lendingPool.tokenAAmount.toFixed(6)})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"Lending Pool tokenBAmount:"}),e.jsx("span",{className:"pool-value",children:s.lendingPool.tokenBAmount.toFixed(6)})]})]}):e.jsx("div",{className:"error-message",children:"Failed to load lending pool details"})]}),e.jsxs("div",{className:"user-assets-details",children:[e.jsx("h4",{children:"Your Assets"}),d?e.jsx("div",{className:"loading-lending-pool-details",children:"Loading lending pool details..."}):s?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"tokenA Balance:"}),e.jsx("span",{className:"pool-value",children:s.userAssets.tokenAAmount})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"tokenB Balance:"}),e.jsx("span",{className:"pool-value",children:s.userAssets.tokenBAmount})]})]}):e.jsx("div",{className:"error-message",children:"Failed to load lending pool details"})]}),e.jsxs("div",{className:"user-lending-details",children:[e.jsx("h4",{children:"Your borrowing details"}),d?e.jsx("div",{className:"loading-lending-pool-details",children:"Loading lending pool details..."}):s?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"borrowed tokenB amount:"}),e.jsx("span",{className:"pool-value",children:s.userAssets.borrowReceiptAmount})]}),e.jsxs("div",{className:"pool-details",children:[e.jsx("span",{className:"pool-label",children:"collateral TokenA amount:"}),e.jsx("span",{className:"pool-value",children:s.userAssets.collateralReceiptAmount})]})]}):e.jsx("div",{className:"error-message",children:"Failed to load lending pool details"})]}),e.jsxs("div",{className:"lending-pool-actions",children:[e.jsxs("div",{className:"lending-pool-action-buttons",children:[e.jsx("button",{className:"lending-pool-action-button",onClick:()=>n(a==="depositCollateral"?"none":"depositCollateral"),children:a==="depositCollateral"?"Hide DepositCollateral":"DepositCollateral"}),e.jsx("button",{className:"lending-pool-action-button",onClick:()=>n(a==="borrow"?"none":"borrow"),children:a==="borrow"?"Hide Borrow":"Borrow"}),e.jsx("button",{className:"lending-pool-action-button",onClick:()=>n(a==="repay"?"none":"repay"),children:a==="repay"?"Hide Repay":"Repay"})]}),e.jsx("button",{className:"lending-pool-refresh-button",onClick:u,disabled:d,children:d?"Loading...":"🔄 Refresh"})]}),a==="borrow"&&e.jsx("div",{className:"form-container",children:e.jsx(go,{pool:o,onSuccess:r=>{i(r),n("none"),u()}})}),a==="repay"&&e.jsx("div",{className:"form-container",children:e.jsx(ko,{pool:o,onSuccess:r=>{i(r),n("none"),u()}})}),a==="depositCollateral"&&e.jsx("div",{className:"form-container",children:e.jsx(bo,{pool:o,onSuccess:r=>{i(r),n("none"),u()}})})]})},yo=()=>{const o=L(),{connection:i}=N(),[t,c]=g.useState([]),[a,n]=g.useState(!0),[s,l]=g.useState(null),[d,p]=g.useState(""),u=async()=>{try{if(n(!0),!o)return;const r=await de(o,i);c(r)}catch(r){console.error("Error fetching pools:",r)}finally{n(!1)}};return g.useEffect(()=>{u()},[i,o,d]),a?e.jsxs("div",{className:"pool-list-loading",children:[e.jsx("div",{className:"loading-spinner"}),e.jsx("p",{children:"Loading pools..."})]}):s?e.jsxs("div",{className:"pool-detail-view",children:[e.jsx("button",{className:"back-button",onClick:()=>l(null),children:"← Back to Pool List"}),e.jsx(wo,{pool:s,onTxSuccess:r=>{p(r),u()}})]}):e.jsxs("div",{className:"pool-list-container",children:[e.jsx("h2",{className:"pool-list-title",children:"Available Borrowing Pools"}),t.length===0?e.jsx("div",{className:"no-pools-message",children:"No pools available"}):e.jsx("div",{className:"pool-list",children:t.map(r=>e.jsxs("div",{className:"pool-list-item",onClick:()=>l(r),children:[e.jsxs("div",{className:"pool-tokens",children:[e.jsxs("div",{className:"token-info",children:[e.jsx("span",{className:"token-label",children:"Token A:"}),e.jsxs("span",{className:"token-address",title:r.mintA.toString(),children:[r.mintA.toString().slice(0,4),"...",r.mintA.toString().slice(-4)]})]}),e.jsx("div",{className:"token-separator",children:"⟷"}),e.jsxs("div",{className:"token-info",children:[e.jsx("span",{className:"token-label",children:"Token B:"}),e.jsxs("span",{className:"token-address",title:r.mintB.toString(),children:[r.mintB.toString().slice(0,4),"...",r.mintB.toString().slice(-4)]})]})]}),e.jsx("div",{className:"pool-view-details",children:"View Details →"})]},r.pubkey.toString()))})]})},Z=({isActive:o,onClick:i,icon:t,label:c})=>e.jsxs("button",{className:`nav-tab ${o?"active":""}`,onClick:i,children:[e.jsx("span",{className:"tab-icon",children:t}),e.jsx("span",{className:"tab-label",children:c})]}),_o=()=>{const{publicKey:o}=z(),[i,t]=g.useState("pool");return e.jsx("div",{className:"dashboard-wrapper",children:e.jsx(Oe,{children:e.jsx("div",{className:"dashboard-container",children:e.jsxs("div",{className:"dashboard-content",children:[e.jsxs("nav",{className:"navigation-tabs",children:[(o==null?void 0:o.toBase58())==me&&e.jsx(Z,{isActive:i==="amm",onClick:()=>t("amm"),icon:"⚙️",label:"AMM","data-tab":"amm"}),e.jsx(Z,{isActive:i==="pool",onClick:()=>t("pool"),icon:"↔️",label:"Swap","data-tab":"pool"}),e.jsx(Z,{isActive:i==="lenderPool",onClick:()=>t("lenderPool"),icon:"💰",label:"Lend","data-tab":"lenderPool"}),e.jsx(Z,{isActive:i==="borrowerPool",onClick:()=>t("borrowerPool"),icon:"🏦",label:"Borrow","data-tab":"borrowerPool"}),e.jsx(Z,{isActive:i==="liquidate",onClick:()=>t("liquidate"),icon:"⚡",label:"Liquidate","data-tab":"liquidate"})]}),e.jsx("div",{className:"tab-content",children:i==="amm"&&(o==null?void 0:o.toBase58())==me?e.jsxs("div",{children:[e.jsx(We,{}),e.jsx(qe,{})]}):i==="pool"?e.jsxs("div",{children:[e.jsx("div",{className:"pool-header",children:e.jsx(Ve,{})}),e.jsx(oo,{})]}):i==="lenderPool"?e.jsx("div",{children:e.jsx(uo,{})}):i==="borrowerPool"?e.jsx("div",{children:e.jsx(yo,{})}):i==="liquidate"?e.jsx("div",{children:e.jsx(so,{})}):e.jsx(xo,{})})]})})})})},xo=()=>e.jsx("div",{children:e.jsx("h3",{children:"Coming Soon..."})}),he=g.createContext({network:"localnet",setNetwork:()=>{}}),vo=()=>g.useContext(he),Ao={"mainnet-beta":se("mainnet-beta"),testnet:se("testnet"),devnet:se("devnet"),localnet:"http://127.0.0.1:8899"},jo=({onChange:o,value:i})=>e.jsx("div",{className:"solana-network-select-container",children:e.jsxs("select",{onChange:t=>o(t.target.value),value:i,className:"solana-network-select",children:[e.jsx("option",{value:"devnet",children:"Devnet"}),e.jsx("option",{value:"localnet",children:"Localnet"}),e.jsx("option",{value:"testnet",children:"Testnet"}),e.jsx("option",{value:"mainnet-beta",children:"Mainnet"})]})}),No=({children:o})=>{const[i,t]=g.useState("localnet"),c=g.useMemo(()=>Ao[i],[i]),a=g.useMemo(()=>[new Ae],[]);return e.jsx(he.Provider,{value:{network:i,setNetwork:t},children:e.jsx(je,{endpoint:c,children:e.jsx(Ne,{wallets:a,autoConnect:!0,children:e.jsx(Pe,{children:o})})})})},Po=()=>{const{connected:o}=z(),{network:i,setNetwork:t}=vo();return e.jsxs("div",{className:"app-container",children:[e.jsx("nav",{className:"app-nav",children:e.jsxs("div",{className:"nav-content",children:[e.jsx("div",{className:"nav-left",children:e.jsx("h1",{className:"app-title",children:"Fall"})}),e.jsxs("div",{className:"nav-right",children:[e.jsx(jo,{onChange:t,value:i}),e.jsx(Se,{className:"wallet-button"})]})]})}),e.jsx("main",{className:"app-main",children:o?e.jsx(_o,{}):e.jsx("div",{className:"connect-wallet",children:e.jsxs("div",{className:"connect-card",children:[e.jsx("span",{className:"connect-icon",children:"🌟"}),e.jsx("h2",{children:"Welcome to Fall"}),e.jsx("p",{children:"Please connect your wallet to continue"})]})})})]})};typeof window<"u"&&(window.global=window,window.Buffer=f);Be.createRoot(document.getElementById("root")).render(e.jsx(Te.StrictMode,{children:e.jsx(No,{children:e.jsx(Po,{})})})); diff --git a/index.html b/index.html index ea663ad..7d3df28 100644 --- a/index.html +++ b/index.html @@ -5,10 +5,10 @@ Vite + React + TS - + - +