AURA

Aura (High-Level)

The recommended high-level API with sensible defaults, auto timestamps, and namespaced methods.

Pre-alpha — not production ready

@aura-protocol/sdk-ts targets Solana devnet only. APIs may change without notice. Do not use for real funds until a stable release and audit are published.

The Aura class is the recommended entry point for most developers. It wraps AuraClient with sensible defaults, automatic timestamp injection, plain number inputs (no BN required), and methods organized into logical namespaces.

import { Aura } from '@aura-protocol/sdk-ts';
import { Keypair } from '@solana/web3.js';

const aura = new Aura({
  rpcUrl: 'https://devnet.helius-rpc.com/?api-key=YOUR_KEY',
  keypair: Keypair.generate(),
});

Constructor

new Aura(options: AuraOptions)
ParameterTypeRequiredDescription
rpcUrlstringSolana RPC endpoint
keypairKeypairDefault signing keypair for all operations
programIdPublicKeyOverride program ID (defaults to devnet)

Accessing the low-level client

const client = aura.lowLevel; // AuraClient instance

aura.treasury

create

Create a new AI agent treasury. Timestamps are injected automatically. Unspecified limits default to sensible fractions of dailyLimitUsd.

aura.treasury.create(options: CreateTreasuryOptions): Promise<{
  treasury: PublicKey;
  signature: string;
}>
OptionTypeRequiredDefaultDescription
agentIdstringUnique agent identifier
dailyLimitUsdnumberDaily spend cap in USD cents
perTxLimitUsdnumberPer-transaction cap in USD cents
aiAuthorityPublicKeykeypair.publicKeyAI signer public key
daytimeHourlyLimitUsdnumberdailyLimit / 10Daytime hourly cap in USD cents
nighttimeHourlyLimitUsdnumberdailyLimit / 20Nighttime hourly cap in USD cents
velocityLimitUsdnumberdailyLimit / 2Short-window velocity cap in USD cents
allowedProtocolBitmapnumber31 (all)Protocol whitelist bitmap
maxSlippageBpsnumber100 (1%)Max slippage in bps
maxQuoteAgeSecsnumber300Max price quote age in seconds
maxCounterpartyRiskScorenumber70Max risk score 0–100
bitcoinManualReviewThresholdUsdnumber5_000Bitcoin manual review threshold in USD cents
pendingTransactionTtlSecsnumber900Proposal TTL in seconds
const { treasury, signature } = await aura.treasury.create({
  agentId: 'agent-prod-1',
  dailyLimitUsd: 10_000,
  perTxLimitUsd: 1_000,
});

console.log('Treasury:', treasury.toBase58());

get / getOrNull / getForOwner

Fetch treasury accounts.

aura.treasury.get(treasury: PublicKey): Promise<TreasuryAccountRecord>
aura.treasury.getOrNull(treasury: PublicKey): Promise<TreasuryAccountRecord | null>
aura.treasury.getForOwner(owner: PublicKey, agentId: string): Promise<{
  treasury: PublicKey;
  account: TreasuryAccountRecord | null;
}>
const account = await aura.treasury.get(treasuryPDA);
const maybeAccount = await aura.treasury.getOrNull(treasuryPDA);
const { treasury, account } = await aura.treasury.getForOwner(owner, 'agent-prod-1');

propose

Propose a transaction. Timestamps injected automatically.

aura.treasury.propose(options: ProposeTransactionOptions): Promise<string>
OptionTypeRequiredDescription
treasuryPublicKeyTreasury PDA
amountUsdnumberTransaction amount in USD cents
chainnumberTarget chain (0=Solana 1=Bitcoin 2=Ethereum 3=Polygon 4=Arbitrum 5=Optimism)
recipientstringRecipient address on the target chain
txTypenumberTransaction type (0=Transfer, default)
protocolIdnumberProtocol bitmap bit
expectedOutputUsdnumberExpected output for slippage check
actualOutputUsdnumberActual output for slippage check
quoteAgeSecsnumberAge of price quote in seconds
counterpartyRiskScorenumber0–100 risk score
aiAuthoritySignerOverride AI authority (defaults to keypair)
const signature = await aura.treasury.propose({
  treasury,
  amountUsd: 250,
  chain: 2,                          // Ethereum
  recipient: '0xdeadbeef...',
  counterpartyRiskScore: 15,
});

pause

Pause or resume execution.

aura.treasury.pause(options: PauseExecutionOptions): Promise<string>
await aura.treasury.pause({ treasury, paused: true });
await aura.treasury.pause({ treasury, paused: false });

cancel

Cancel the current pending transaction.

aura.treasury.cancel(options: CancelPendingOptions): Promise<string>
OptionTypeRequiredDescription
treasuryPublicKeyTreasury PDA
ownerSignerOverride owner (defaults to keypair)

aura.dwallet

register

Register a dWallet reference with the treasury.

aura.dwallet.register(options: RegisterDwalletOptions): Promise<string>
OptionTypeRequiredDescription
treasuryPublicKeyTreasury PDA
chainnumberTarget chain (0–5)
dwalletIdstringUnique dWallet identifier from Ika
addressstringNative address on the target chain
balanceUsdnumberCurrent balance hint in USD cents
ownerSignerOverride owner (defaults to keypair)
await aura.dwallet.register({
  treasury,
  chain: 2,                          // Ethereum
  dwalletId: 'dwallet-abc123',
  address: '0xdeadbeef...',
  balanceUsd: 5_000,
});

aura.governance

configureMultisig

Set guardian keys and approval threshold.

aura.governance.configureMultisig(options: ConfigureMultisigOptions): Promise<string>
OptionTypeRequiredDescription
treasuryPublicKeyTreasury PDA
requiredSignaturesnumberNumber of guardian signatures required
guardiansPublicKey[]List of guardian public keys
ownerSignerOverride owner (defaults to keypair)
await aura.governance.configureMultisig({
  treasury,
  requiredSignatures: 2,
  guardians: [guardian1.publicKey, guardian2.publicKey, guardian3.publicKey],
});

configureSwarm

Attach the treasury to a shared swarm spending pool.

aura.governance.configureSwarm(options: ConfigureSwarmOptions): Promise<string>
OptionTypeRequiredDescription
treasuryPublicKeyTreasury PDA
swarmIdstringUnique swarm identifier
memberAgentsstring[]Agent IDs in the swarm
sharedPoolLimitUsdnumberShared pool limit in USD cents
ownerSignerOverride owner (defaults to keypair)
await aura.governance.configureSwarm({
  treasury,
  swarmId: 'swarm-alpha',
  memberAgents: ['agent-1', 'agent-2'],
  sharedPoolLimitUsd: 50_000,
});

Aura vs AuraClient

AuraAuraClient
TimestampsAuto-injectedManual BN
NumbersPlain numberBN required
PDA derivationAutomaticManual or helper
Instruction compositionNot supported*Instruction() form
All 67 instructionsSubset (common ops)Full surface
Best forApps, agents, scriptsAdvanced / batching

For anything not covered by Aura, drop down to aura.lowLevel.

On this page