Skip to main content

Overview

The AccessClient provides methods to configure access controls, enable/disable protocols, manage delegate permissions, and handle emergency access updates.

Methods

emergencyAccessUpdate

Performs emergency access control changes that bypass the timelock mechanism for critical security updates.
emergencyAccessUpdate(
  args: Partial<EmergencyAccessUpdateArgs>,
  txOptions?: TxOptions
): Promise<TransactionSignature>
args
Partial<EmergencyAccessUpdateArgs>
required
Emergency access update parameters
txOptions
TxOptions
Transaction options including signer and compute budget
Example
const signature = await glamClient.access.emergencyAccessUpdate({
  // emergency access parameters
});

enableProtocols

Enables specific protocols for an integration program using a bitmask.
enableProtocols(
  integrationProgram: PublicKey,
  protocolBitmask: number,
  txOptions?: TxOptions
): Promise<TransactionSignature>
integrationProgram
PublicKey
required
The integration program to configure
protocolBitmask
number
required
Bitmask representing which protocols to enable
txOptions
TxOptions
Transaction options
Example
const signature = await glamClient.access.enableProtocols(
  integrationProgramId,
  0b01 // Enable first protocol
);

disableProtocols

Disables specific protocols for an integration program.
disableProtocols(
  integrationProgram: PublicKey,
  protocolBitmask: number,
  txOptions?: TxOptions
): Promise<TransactionSignature>
integrationProgram
PublicKey
required
The integration program to configure
protocolBitmask
number
required
Bitmask representing which protocols to disable
txOptions
TxOptions
Transaction options
Example
const signature = await glamClient.access.disableProtocols(
  integrationProgramId,
  0b10 // Disable second protocol
);

grantDelegatePermissions

Grants specific permissions to a delegate for a protocol.
grantDelegatePermissions(
  delegate: PublicKey,
  integrationProgram: PublicKey,
  protocolBitflag: number,
  permissionsBitmask: BN,
  txOptions?: TxOptions
): Promise<TransactionSignature>
delegate
PublicKey
required
The delegate address to grant permissions to
integrationProgram
PublicKey
required
The integration program
protocolBitflag
number
required
Protocol identifier
permissionsBitmask
BN
required
Bitmask of permissions to grant
txOptions
TxOptions
Transaction options
Example
import { BN } from "@coral-xyz/anchor";

const signature = await glamClient.access.grantDelegatePermissions(
  delegateAddress,
  integrationProgramId,
  1,
  new BN(0b111) // Grant multiple permissions
);

revokeDelegatePermissions

Revokes specific permissions from a delegate for a protocol.
revokeDelegatePermissions(
  delegate: PublicKey,
  integrationProgram: PublicKey,
  protocolBitflag: number,
  permissionsBitmask: BN,
  txOptions?: TxOptions
): Promise<TransactionSignature>
delegate
PublicKey
required
The delegate address to revoke permissions from
integrationProgram
PublicKey
required
The integration program
protocolBitflag
number
required
Protocol identifier
permissionsBitmask
BN
required
Bitmask of permissions to revoke
txOptions
TxOptions
Transaction options
Example
const signature = await glamClient.access.revokeDelegatePermissions(
  delegateAddress,
  integrationProgramId,
  1,
  new BN(0b100)
);

setProtocolPolicy

Sets protocol-specific policy data for an integration.
setProtocolPolicy(
  integrationProgram: PublicKey,
  protocolBitflag: number,
  data: Buffer,
  txOptions?: TxOptions
): Promise<TransactionSignature>
integrationProgram
PublicKey
required
The integration program
protocolBitflag
number
required
Protocol identifier
data
Buffer
required
Serialized policy data
txOptions
TxOptions
Transaction options
Example
const policyData = Buffer.from([/* policy bytes */]);

const signature = await glamClient.access.setProtocolPolicy(
  integrationProgramId,
  1,
  policyData
);

Types

TxOptions

interface TxOptions {
  signer?: PublicKey;
  computeUnitLimit?: number;
  computeUnitPrice?: number;
}

Build docs developers (and LLMs) love