quorum-sdk
v0.1.0
Published
TypeScript SDK for Quorum - Multi-Agent Wallet Coordination
Maintainers
Readme
@agent-multisig/sdk
TypeScript SDK for the Agent Multisig Coordination API.
Enables AI agents to participate in multi-signature Bitcoin transactions.
Installation
npm install @agent-multisig/sdkQuick Start
import { AgentMultisig } from '@agent-multisig/sdk';
const client = new AgentMultisig({
apiUrl: 'https://agent-multisig-api-production.up.railway.app',
apiKey: 'your-api-key' // optional
});
// Quick setup: register agents and create multisig in one call
const { multisig, agents } = await client.quickSetup({
name: 'AI Treasury',
threshold: 2,
signers: [
{ name: 'TreasuryBot', provider: 'aibtc', publicKey: '...' },
{ name: 'AuditBot', provider: 'aibtc', publicKey: '...' },
{ name: 'BackupBot', provider: 'aibtc', publicKey: '...' },
],
network: 'mainnet'
});
console.log('Fund this address:', multisig.address);
// => bc1p6f4vmxvwnpgrgmmc4653u28jxlrf3enh0qwcev6safpcfy4y8gdqfcnjf6Creating a Spend Proposal
// Create a proposal to spend from the multisig
const proposal = await client.createProposal({
multisigId: multisig.id,
to: 'bc1qpzlw29z50cz7ysjpsaqggtscya3p6ggehnsp2g',
amount: 10000 // satoshis
});
console.log('PSBT to sign:', proposal.psbtHex);Signing
// Each agent signs the proposal
await client.signProposal({
proposalId: proposal.id,
agentId: agents[0].id,
signature: 'schnorr_signature_hex...'
});
await client.signProposal({
proposalId: proposal.id,
agentId: agents[1].id,
signature: 'schnorr_signature_hex...'
});
// Once threshold is met, broadcast
const { txid } = await client.broadcastProposal(proposal.id);
console.log('Transaction broadcast:', txid);Waiting for Confirmation
// Wait for the proposal to be confirmed on-chain
const confirmed = await client.waitForProposal(proposal.id, 'confirmed', {
timeoutMs: 600000, // 10 minutes
pollIntervalMs: 10000 // check every 10 seconds
});
console.log('Confirmed in txid:', confirmed.txid);Real-World Example
This SDK was used to execute a real 2-of-3 multisig transaction on Bitcoin mainnet:
Funding TX: 3222492b...
Spend TX: 8b371247...
20,000 sats → 2-of-3 Taproot multisig → Signed by 2 agents → Confirmed in block 937432.
API Reference
new AgentMultisig(config)
Create a new client instance.
| Option | Type | Description |
|--------|------|-------------|
| apiUrl | string | API base URL |
| apiKey | string? | Optional API key |
| timeout | number? | Request timeout in ms (default: 30000) |
Agents
registerAgent(input)- Register a new agentgetAgent(agentId)- Get agent by IDlistAgents()- List all agents
Multisigs
createMultisig(input)- Create a new multisiggetMultisig(multisigId)- Get multisig by IDlistMultisigs()- List all multisigsgetMultisigBalance(multisigId)- Get balance and UTXOs
Proposals
createProposal(input)- Create a spend proposalgetProposal(proposalId)- Get proposal by IDlistProposals(multisigId?)- List proposalssignProposal(input)- Submit a signaturebroadcastProposal(proposalId)- Broadcast when ready
Convenience
quickSetup(input)- Register agents + create multisig in one callwaitForProposal(id, status, options)- Poll until status reached
License
MIT
