GLAMIDL Reference

create_loan

Create a new Loopscale loan PDA owned by the GLAM vault.

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.
  • Creation-style flows require the target account or PDA to be uninitialized or intentionally updatable, the fee payer to be writable, and the System Program to be present when rent or allocation is needed.
  • The instruction metadata names ManageLoan as the delegate permission for this instruction.

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 create loan instruction.
loanwritableLoopscale loan account.
event_authorityread-onlyEvent authority or downstream event account.

Arguments

ArgumentTypeNotes
paramsCreateLoanParams

Policy & permissions

  • Enable the Loopscale integration program on the vault integration ACL before Loopscale position actions.
  • Delegate permission: ManageLoan.

TypeScript SDK usage

const loan = glamClient.loopscale.getLoanPda(nonce);
const createLoanIx = await glamClient.loopscale.txBuilder.createLoanIx(
  { nonce },
  { loan },
);