@superorange/network-js-sdk
v0.1.2
Published
Primus Network js sdk
Readme
PrimusNetwork SDK Documentation
Overview
The PrimusNetwork SDK is a TypeScript library designed for blockchain network interaction, enabling developers to submit tasks, perform attestations, and query task statuses. It abstracts smart contract interactions through a developer-friendly API.
Key Features
- SDK Initialization: Connect to specified blockchain networks
- Task Submission: Submit tasks requiring attestation to the network
- Attestation Execution: Perform verification using selected nodes
- Status Polling: Continuously check task status and results
- Balance Withdrawal: Claim rewards from the contract
Installation
npm install @primuslabs/network-js-sdk
# or
yarn add @primuslabs/network-js-sdkGetting Started
1. Initialize the SDK
import { PrimusNetwork } from 'primus-network-sdk';
import { ethers } from 'ethers';
// Create provider (Metamask, WalletConnect, or custom node)
const provider = new ethers.providers.Web3Provider(window.ethereum);
const primusNetwork = new PrimusNetwork();
async function initializeSdk() {
try {
const chainId = 84532; // Base Sepolia example
await primusNetwork.init(provider, chainId);
console.log('SDK initialized successfully');
} catch (error) {
console.error('Initialization failed:', error);
}
}
initializeSdk();2. Submit Tasks
async function submitTask() {
try {
const params = {
templateId: 'your_template_id', // Task template identifier
address: '0x...', // User address
};
const result = await primusNetwork.submitTask(params);
console.log('Task submitted:', result);
// Result includes taskId, taskTxHash for subsequent operations
} catch (error) {
console.error('Submission failed:', error);
}
}3. Perform Attestation
async function attestTask(taskInfo: any) {
try {
const params = {
templateId: 'your_template_id', // Task template identifier
address: '0x...', // User address
taskId: taskInfo.taskId,
taskTxHash: taskInfo.taskTxHash,
attestors: taskInfo.taskAttestors,
// Additional attestation parameters...
}; // Using taskId/taskTxHash/attestors from submitTask response
const results = await primusNetwork.attest(params);
console.log('Attestation results:', results);
} catch (error) {
console.error('Attestation failed:', error);
}
}4. Check Task Detail
async function monitorTask(taskId: string) {
try {
const taskDetailResult = await primusNetwork.pollTaskDetail({
taskId,
});
console.log('TaskDetailResult :', taskDetailResult);
// Process results...
} catch (error) {
console.error('Polling failed:', error);
}
}5. Withdraw Funds
async function withdrawRewards() {
try {
const settledTasks = await primusNetwork.withdrawBalance();
console.log('Withdrawal successful. Settled tasks:', settledTasks);
} catch (error) {
console.error('Withdrawal failed:', error);
}
}Complete Example
import { PrimusNetwork } from 'primus-network-sdk';
import { ethers } from 'ethers';
async function main() {
const provider = new ethers.providers.Web3Provider(window.ethereum);
const primusNetwork = new PrimusNetwork();
try {
// Initialize
await primusNetwork.init(provider, 84532); // Base Sepolia
console.log('SDK initialized');
// Submit task
const submitTaskResult = await primusNetwork.submitTask({
templateId: 'template_123',
address: '0x...'
});
console.log('Task submitted:', submitTaskResult);
// Perform attestation
const attestResult = await primusNetwork.attest({
templateId: 'template_123',
address: '0x...',
taskId: submitTaskResult.taskId,
taskTxHash: submitTaskResult.taskTxHash,
attestors: submitTaskResult.taskAttestors
});
console.log('Attestation completed:', submitTaskResult);
// Check task detail
const taskDetailResult = await primusNetwork.pollTaskDetail({
taskId: submitTaskResult.taskId,
});
console.log('Final result:', taskDetailResult);
// Optional withdrawal
// const settled = await primusNetwork.withdrawBalance();
// console.log('Withdrawn:', settled);
} catch (error) {
console.error('Main flow error:', error);
}
}
main();Important Notes
- Verify
chainIdis supported by checkingSUPPORTEDCHAINIDS - Initialize SDK before submitting tasks
- Set appropriate timeouts for attestation operations
- Implement comprehensive error handling
Supported Networks
Check SUPPORTEDCHAINIDS for available networks:
- 1: Base Mainnet
