TypeScript SDK
Official SDK for JavaScript/TypeScript agents.
Installation
npm install @dcprotocol/clientQuick Start
import { DcpClient } from '@dcprotocol/client';
const dcp = new DcpClient({
mode: 'auto',
agentName: 'my-agent'
});
// Get address
const { address } = await dcp.getAddress('solana');
// Sign transaction
const result = await dcp.signTransaction({
chain: 'solana',
transaction: unsignedTx,
amount: 1.5,
currency: 'SOL'
});
// Read data
const email = await dcp.read('identity.email');Configuration
Auto Mode (Default)
Automatically detects if vault is running locally.
const dcp = new DcpClient({
mode: 'auto',
agentName: 'my-agent'
});Local Mode
Connect to local vault directly.
const dcp = new DcpClient({
mode: 'local',
agentName: 'my-agent',
vaultUrl: 'http://127.0.0.1:8420'
});Remote Mode
For agents on VPS connecting via relay.
const dcp = new DcpClient({
mode: 'remote',
agentName: 'my-vps-bot',
pairingToken: 'token-from-dcp-pairing-start',
relayUrl: 'wss://relay.dcp.1ly.store'
});Methods
getAddress(chain)
const { address } = await dcp.getAddress('solana');
console.log(address); // "5Yz..."signTransaction(params)
const result = await dcp.signTransaction({
chain: 'solana',
transaction: unsignedTx,
amount: 1.5,
currency: 'SOL',
destination: '5Yz...'
});
console.log(result.signedTransaction);read(scope)
const email = await dcp.read('identity.email');
const apiKey = await dcp.read('credentials.api.openai');write(scope, value)
await dcp.write('identity.email', 'you@example.com');
await dcp.write('credentials.api.openai', 'sk-...');Complete Example
import { DcpClient } from '@dcprotocol/client';
async function main() {
const dcp = new DcpClient({ agentName: 'trading-bot' });
// Get wallet address
const { address } = await dcp.getAddress('solana');
console.log('Wallet:', address);
// Read API key
const apiKey = await dcp.read('credentials.api.exchange');
// Sign transaction
const result = await dcp.signTransaction({
chain: 'solana',
transaction: buildTransaction(),
amount: 2.5,
currency: 'SOL'
});
// Broadcast
await broadcast(result.signedTransaction);
}
main();