export type Scow = { "version": "0.1.0"; "name": "scow"; "instructions": [ { "name": "trancheInvestorCreate"; "docs": [ "Creates a tranche_investor account. This account is specific for the combination of an investor and a tranche in a deal.", "Upon creation, we also have to pass the investor_base_token_account, which is the base token account (e.g. USDC) of the investor", "at their exchange of choice (e.g. Circle, fireblocks, coinbase, etc.). Upon repayments, the investor's share will be sent to", "this token account" ]; "accounts": [ { "name": "manager"; "isMut": true; "isSigner": true; }, { "name": "globalMarketState"; "isMut": false; "isSigner": false; }, { "name": "marketAdmins"; "isMut": false; "isSigner": false; }, { "name": "deal"; "isMut": false; "isSigner": false; }, { "name": "dealTranches"; "isMut": false; "isSigner": false; }, { "name": "trancheInvestor"; "isMut": true; "isSigner": false; "pda": { "seeds": [ { "kind": "account"; "type": "publicKey"; "account": "Deal"; "path": "deal"; }, { "kind": "arg"; "type": "u8"; "path": "tranche_index"; }, { "kind": "account"; "type": "publicKey"; "account": "TokenAccount"; "path": "investor_base_token_account"; } ]; }; }, { "name": "baseMint"; "isMut": false; "isSigner": false; }, { "name": "trancheInvestorAta"; "isMut": true; "isSigner": false; }, { "name": "investor"; "isMut": false; "isSigner": false; }, { "name": "investorBaseTokenAccount"; "isMut": false; "isSigner": false; }, { "name": "systemProgram"; "isMut": false; "isSigner": false; }, { "name": "tokenProgram"; "isMut": false; "isSigner": false; }, { "name": "associatedTokenProgram"; "isMut": false; "isSigner": false; } ]; "args": [ { "name": "trancheIndex"; "type": "u8"; } ]; }, { "name": "trancheDeposit"; "docs": [ "When sending funds to the associated token account of the previously created tranche_investor account, we can invoke the", "tranche_deposit instruction. This instruction calls the credix programs' deposit_tranche instruction,", "using the tranche_investor as investor. Tranche tokens will be minted to the tranche_investor's associated (tranche) token account" ]; "accounts": [ { "name": "payer"; "isMut": true; "isSigner": true; }, { "name": "globalMarketState"; "isMut": false; "isSigner": false; }, { "name": "credixSigningAuthority"; "isMut": false; "isSigner": false; }, { "name": "deal"; "isMut": false; "isSigner": false; }, { "name": "dealTranches"; "isMut": true; "isSigner": false; }, { "name": "repaymentSchedule"; "isMut": false; "isSigner": false; }, { "name": "trancheInvestor"; "isMut": true; "isSigner": false; "pda": { "seeds": [ { "kind": "account"; "type": "publicKey"; "account": "Deal"; "path": "deal"; }, { "kind": "account"; "type": "u8"; "account": "TrancheInvestor"; "path": "tranche_investor.tranche_index"; }, { "kind": "account"; "type": "publicKey"; "account": "TrancheInvestor"; "path": "tranche_investor.investor_base_token_account"; } ]; }; }, { "name": "trancheInvestorAta"; "isMut": true; "isSigner": false; }, { "name": "dealTokenAccount"; "isMut": true; "isSigner": false; }, { "name": "trancheTokenMint"; "isMut": true; "isSigner": false; }, { "name": "investorTrancheTokenAccount"; "isMut": true; "isSigner": false; }, { "name": "tranchePass"; "isMut": true; "isSigner": false; }, { "name": "trancheInfo"; "isMut": true; "isSigner": false; "isOptional": true; }, { "name": "baseTokenMint"; "isMut": false; "isSigner": false; }, { "name": "credixProgram"; "isMut": false; "isSigner": false; }, { "name": "associatedTokenProgram"; "isMut": false; "isSigner": false; }, { "name": "rent"; "isMut": false; "isSigner": false; }, { "name": "tokenProgram"; "isMut": false; "isSigner": false; }, { "name": "systemProgram"; "isMut": false; "isSigner": false; } ]; "args": []; }, { "name": "trancheWithdraw"; "docs": [ "Once the tranche_investor account has tranche tokens, we can use this to withdraw funds from the tranche, if funds are available", "following repayments. This instruction calls the credix programs' withdraw_tranche instruction,", "using the tranche_investor as investor. Upon successful withdrawal base tokens (e.g. USDC) will be sent to the", "investor_base_token_account as defined in the tranche_investor account" ]; "accounts": [ { "name": "payer"; "isMut": true; "isSigner": true; }, { "name": "trancheInvestor"; "isMut": true; "isSigner": false; "pda": { "seeds": [ { "kind": "account"; "type": "publicKey"; "account": "Deal"; "path": "deal"; }, { "kind": "account"; "type": "u8"; "account": "TrancheInvestor"; "path": "tranche_investor.tranche_index"; }, { "kind": "account"; "type": "publicKey"; "account": "TrancheInvestor"; "path": "tranche_investor.investor_base_token_account"; } ]; }; }, { "name": "tranchePass"; "isMut": true; "isSigner": false; }, { "name": "dealTokenAccount"; "isMut": true; "isSigner": false; }, { "name": "deal"; "isMut": false; "isSigner": false; }, { "name": "repaymentSchedule"; "isMut": false; "isSigner": false; }, { "name": "globalMarketState"; "isMut": false; "isSigner": false; }, { "name": "trancheInvestorAta"; "isMut": true; "isSigner": false; }, { "name": "baseTokenMint"; "isMut": false; "isSigner": false; }, { "name": "dealTranches"; "isMut": false; "isSigner": false; }, { "name": "credixSigningAuthority"; "isMut": false; "isSigner": false; }, { "name": "trancheTokenMint"; "isMut": false; "isSigner": false; }, { "name": "trancheInvestorTrancheTokenAccount"; "isMut": true; "isSigner": false; }, { "name": "trancheInfo"; "isMut": true; "isSigner": false; "isOptional": true; }, { "name": "associatedTokenProgram"; "isMut": false; "isSigner": false; }, { "name": "rent"; "isMut": false; "isSigner": false; }, { "name": "tokenProgram"; "isMut": false; "isSigner": false; }, { "name": "systemProgram"; "isMut": false; "isSigner": false; }, { "name": "credixProgram"; "isMut": false; "isSigner": false; }, { "name": "investorBaseTa"; "isMut": true; "isSigner": false; } ]; "args": []; }, { "name": "poolInvestorCreate"; "docs": [ "Creates a pool_investor account. This account is specific for the combination of an investor and a liquidity pool", "Upon creation, we also have to pass the investor_base_token_account, which is the base token account (e.g. USDC) of the investor", "at their exchange of choice (e.g. Circle, fireblocks, coinbase, etc.). Upon repayments, the investor's share will be sent to", "this token account" ]; "accounts": [ { "name": "manager"; "isMut": true; "isSigner": true; }, { "name": "globalMarketState"; "isMut": false; "isSigner": false; }, { "name": "marketAdmins"; "isMut": false; "isSigner": false; }, { "name": "poolInvestor"; "isMut": true; "isSigner": false; "pda": { "seeds": [ { "kind": "account"; "type": "publicKey"; "account": "GlobalMarketState"; "path": "global_market_state"; }, { "kind": "account"; "type": "publicKey"; "account": "TokenAccount"; "path": "investor_base_token_account"; } ]; }; }, { "name": "baseMint"; "isMut": false; "isSigner": false; }, { "name": "poolInvestorAta"; "isMut": true; "isSigner": false; }, { "name": "investor"; "isMut": false; "isSigner": false; }, { "name": "investorBaseTokenAccount"; "isMut": false; "isSigner": false; }, { "name": "systemProgram"; "isMut": false; "isSigner": false; }, { "name": "tokenProgram"; "isMut": false; "isSigner": false; }, { "name": "associatedTokenProgram"; "isMut": false; "isSigner": false; } ]; "args": []; }, { "name": "poolDeposit"; "docs": [ "When sending funds to the associated token account of the previously created pool_investor account, we can invoke the", "pool_deposit instruction. This instruction calls the credix programs' deposit_funds instruction,", "using the pool_investor as investor. LP tokens will be minted to the pool_investor's associated (LP) token account" ]; "accounts": [ { "name": "signer"; "isMut": true; "isSigner": true; }, { "name": "globalMarketState"; "isMut": false; "isSigner": false; }, { "name": "credixSigningAuthority"; "isMut": false; "isSigner": false; }, { "name": "poolInvestor"; "isMut": true; "isSigner": false; "pda": { "seeds": [ { "kind": "account"; "type": "publicKey"; "account": "GlobalMarketState"; "path": "global_market_state"; }, { "kind": "account"; "type": "publicKey"; "account": "PoolInvestor"; "path": "pool_investor.investor_base_token_account"; } ]; }; }, { "name": "poolInvestorAta"; "isMut": true; "isSigner": false; }, { "name": "liquidityPoolTokenAccount"; "isMut": true; "isSigner": false; }, { "name": "lpTokenMint"; "isMut": true; "isSigner": false; }, { "name": "poolInvestorLpTokenAccount"; "isMut": true; "isSigner": false; }, { "name": "credixPass"; "isMut": false; "isSigner": false; }, { "name": "baseTokenMint"; "isMut": false; "isSigner": false; }, { "name": "credixProgram"; "isMut": false; "isSigner": false; }, { "name": "associatedTokenProgram"; "isMut": false; "isSigner": false; }, { "name": "rent"; "isMut": false; "isSigner": false; }, { "name": "tokenProgram"; "isMut": false; "isSigner": false; }, { "name": "systemProgram"; "isMut": false; "isSigner": false; } ]; "args": []; }, { "name": "poolWithdraw"; "docs": [ "Once the pool_investor account has LP tokens, we can use this to withdraw funds from the tranche, if funds are available", "following repayments. This instruction calls the credix programs' withdraw_funds instruction,", "using the pool_investor as investor. Upon successful withdrawal base tokens (e.g. USDC) will be sent to the", "investor_base_token_account as defined in the pool_investor account" ]; "accounts": [ { "name": "signer"; "isMut": true; "isSigner": true; }, { "name": "globalMarketState"; "isMut": false; "isSigner": false; }, { "name": "credixSigningAuthority"; "isMut": false; "isSigner": false; }, { "name": "poolInvestor"; "isMut": true; "isSigner": false; "pda": { "seeds": [ { "kind": "account"; "type": "publicKey"; "account": "GlobalMarketState"; "path": "global_market_state"; }, { "kind": "account"; "type": "publicKey"; "account": "PoolInvestor"; "path": "pool_investor.investor_base_token_account"; } ]; }; }, { "name": "poolInvestorAta"; "isMut": true; "isSigner": false; }, { "name": "liquidityPoolTokenAccount"; "isMut": true; "isSigner": false; }, { "name": "lpTokenMint"; "isMut": true; "isSigner": false; }, { "name": "investorLpTokenAccount"; "isMut": true; "isSigner": false; }, { "name": "credixPass"; "isMut": true; "isSigner": false; }, { "name": "baseTokenMint"; "isMut": false; "isSigner": false; }, { "name": "programState"; "isMut": false; "isSigner": false; }, { "name": "credixTreasury"; "isMut": false; "isSigner": false; }, { "name": "credixTreasuryTokenAccount"; "isMut": true; "isSigner": false; }, { "name": "treasuryPoolTokenAccount"; "isMut": true; "isSigner": false; }, { "name": "investorBaseTa"; "isMut": true; "isSigner": false; }, { "name": "credixProgram"; "isMut": false; "isSigner": false; }, { "name": "associatedTokenProgram"; "isMut": false; "isSigner": false; }, { "name": "rent"; "isMut": false; "isSigner": false; }, { "name": "tokenProgram"; "isMut": false; "isSigner": false; }, { "name": "systemProgram"; "isMut": false; "isSigner": false; } ]; "args": [ { "name": "amount"; "type": "u64"; } ]; }, { "name": "returnFundsToInvestor"; "docs": [ "If, for some reason, there are still base_tokens left in the associated token account of the tranche_investor after", "investing in the tranche, we can invoke this instruction to send them back to the investor_base_token_account.", "This functionality is only defined for the tranche_investor as the pool investor wil always invest all base_tokens", "in the pool." ]; "accounts": [ { "name": "manager"; "isMut": false; "isSigner": true; }, { "name": "globalMarketState"; "isMut": false; "isSigner": false; }, { "name": "marketAdmins"; "isMut": false; "isSigner": false; }, { "name": "deal"; "isMut": false; "isSigner": false; }, { "name": "trancheInvestor"; "isMut": false; "isSigner": false; "pda": { "seeds": [ { "kind": "account"; "type": "publicKey"; "account": "Deal"; "path": "deal"; }, { "kind": "account"; "type": "u8"; "account": "TrancheInvestor"; "path": "tranche_investor.tranche_index"; }, { "kind": "account"; "type": "publicKey"; "account": "TrancheInvestor"; "path": "tranche_investor.investor_base_token_account"; } ]; }; }, { "name": "trancheInvestorAta"; "isMut": true; "isSigner": false; }, { "name": "investorBaseTokenAccount"; "isMut": true; "isSigner": false; }, { "name": "tokenProgram"; "isMut": false; "isSigner": false; } ]; "args": []; } ]; "accounts": [ { "name": "poolInvestor"; "type": { "kind": "struct"; "fields": [ { "name": "investorBaseTokenAccount"; "type": "publicKey"; }, { "name": "market"; "type": "publicKey"; }, { "name": "bump"; "type": "u8"; } ]; }; }, { "name": "trancheInvestor"; "type": { "kind": "struct"; "fields": [ { "name": "investorBaseTokenAccount"; "type": "publicKey"; }, { "name": "deal"; "type": "publicKey"; }, { "name": "trancheIndex"; "type": "u8"; }, { "name": "bump"; "type": "u8"; } ]; }; } ]; "errors": [ { "code": 9000; "name": "TrancheDoesNotExist"; "msg": "No tranche found at tranche index for tranche investor"; }, { "code": 9001; "name": "UnauthorizedSigner"; "msg": "Unauthorized signer"; }, { "code": 9002; "name": "LiquidityPoolFundedTranche"; "msg": "Cannot create SCOW investor for pool funded tranche"; }, { "code": 9003; "name": "InvalidTrancheInvestorBaseTokenAccount"; "msg": "Tranche investor base token should be same as stored in tranche investor account"; } ]; }; export declare const IDL: Scow; //# sourceMappingURL=scow.d.ts.map