GLAMIDL Reference

borrow_principal

Borrow principal against a locked loan.

Required conditions

  • The vault integration ACL must enable this integration before the instruction is accepted; that enablement is defined on the GLAM state account.
  • If the signer is not the owner, the delegate ACL on the GLAM state must contain the exact protocol permission required by this instruction; registering a delegate alone is insufficient.
  • Instruction-specific destination accounts must satisfy the external protocol's own account model; GLAM validates the accounts it needs for authorization and policy enforcement, then passes the remaining protocol accounts through CPI.
  • Borrowing must satisfy both the vault-level borrowable asset list and the integration-specific borrow allowlist where one is configured.
  • The instruction metadata names BorrowPrincipal as the delegate permission for this instruction.
  • principal_mint must be present in the Loopscale borrow allowlist.
  • market_information must be present in the Loopscale markets allowlist.

Accounts

AccountRoleDescription
glam_statewritableGLAM state account that stores vault configuration, integration ACLs, delegate permissions, policies, assets, mint linkage, and pricing records.
glam_vaultwritableVault PDA associated with the GLAM state and used as the vault authority.
glam_signersigner, writableCalling authority or fee payer.
integration_authorityread-onlyProgram-derived authority used by the integration for downstream invocation.
cpi_programread-onlyDownstream program invoked by this instruction.
glam_protocol_programread-onlyGLAM Protocol program account used for authorization or CPI.
system_programread-onlySolana System Program.
bs_authsignerbs auth account read by Loopscale Integration Staging's borrow principal instruction.
loanwritableLoopscale loan account.
strategywritableLoopscale strategy account.
market_informationwritableLoopscale market information account for the strategy, collateral, or principal asset.
principal_mintread-onlyToken mint account used or validated by this instruction.
borrower_tawritableToken account read or written by this instruction.
strategy_tawritableToken account read or written by this instruction.
associated_token_programread-onlyAssociated Token Account program.
token_programread-onlyToken program account.
event_authorityread-onlyEvent authority or downstream event account.

Arguments

ArgumentTypeNotes
paramsBorrowPrincipalParams

Policy & permissions

  • Enable the Loopscale integration program on the vault integration ACL before Loopscale position actions.
  • Delegate permission: BorrowPrincipal.
  • Borrowing must satisfy the vault-level borrowable asset list and any integration-specific borrow allowlist.

TypeScript SDK usage

const borrowPrincipalIx =
  await glamClient.loopscale.txBuilder.borrowPrincipalIx(
    { amount, assetIndexGuidance, duration, expectedLoanValues, skipSolUnwrap },
    { loan, strategy, marketInformation, principalMint, remainingAccounts },
  );

Cross-instruction constraints

  • The Loopscale loan must exist; locking and unlocking determine when principal and collateral movements are valid.