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
ManageLoanas the delegate permission for this instruction.
Accounts
| Account | Role | Description |
|---|---|---|
| glam_state | writable | GLAM state account that stores vault configuration, integration ACLs, delegate permissions, policies, assets, mint linkage, and pricing records. |
| glam_vault | writable | Vault PDA associated with the GLAM state and used as the vault authority. |
| glam_signer | signer, writable | Calling authority or fee payer. |
| integration_authority | read-only | Program-derived authority used by the integration for downstream invocation. |
| cpi_program | read-only | Downstream program invoked by this instruction. |
| glam_protocol_program | read-only | GLAM Protocol program account used for authorization or CPI. |
| system_program | read-only | Solana System Program. |
| bs_auth | signer | bs auth account read by Loopscale Integration Staging's create loan instruction. |
| loan | writable | Loopscale loan account. |
| event_authority | read-only | Event authority or downstream event account. |
Arguments
| Argument | Type | Notes |
|---|---|---|
| params | CreateLoanParams |
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 },
);