{"_id":"@asentum/sdk","name":"@asentum/sdk","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@asentum/sdk","version":"0.1.0","description":"TypeScript SDK for building on Asentum. Chain reads, wallet management, contract deployment and interaction. Works in Node.js and browsers.","license":"Apache-2.0","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"keywords":["asentum","blockchain","sdk","dilithium","post-quantum","wallet","ethereum-rpc"],"repository":{"type":"git","url":"git+https://github.com/asentum-network/sdk.git"},"homepage":"https://asentum.com","bugs":{"url":"https://github.com/asentum-network/sdk/issues"},"publishConfig":{"access":"public"},"scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest run","test:watch":"vitest","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"dependencies":{"@asentum/crypto":"^0.1.0","@asentum/types":"^0.1.0","@chainsafe/ssz":"^0.15.0"},"devDependencies":{"@types/node":"^20.10.0","tsup":"^8.0.0","typescript":"^5.3.0","vitest":"^1.0.0"},"_id":"@asentum/sdk@0.1.0","gitHead":"3da53692308444e2f8516ed1f4c8078ee5937118","_nodeVersion":"22.12.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-r3EsU4zaWltIMQJOUSpCjFBUkphNjfv861x8tmQXDfjaqTU6ML0K+puU3+lRa/AsiLSRWnKd50dYlhtktW2Eig==","shasum":"21034638200e203045f5a5ac3dec4db6bd9f790c","tarball":"https://registry.npmjs.org/@asentum/sdk/-/sdk-0.1.0.tgz","fileCount":10,"unpackedSize":102888,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCa2bp7kdVULlwGPPuGGHx1LAhMYOXHT5oJLnjldHYwIgIhAIdgVFwRzyGbMrdLjY86zvNXQpu2gjbYb55glTHGerO8"}]},"_npmUser":{"name":"milkie_eth","email":"its.quo.eth@gmail.com"},"directories":{},"maintainers":[{"name":"milkie_eth","email":"its.quo.eth@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_0.1.0_1778938393595_0.647046764271711"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-16T13:33:13.549Z","0.1.0":"2026-05-16T13:33:13.748Z","modified":"2026-05-16T13:33:13.914Z"},"maintainers":[{"name":"milkie_eth","email":"its.quo.eth@gmail.com"}],"description":"TypeScript SDK for building on Asentum. Chain reads, wallet management, contract deployment and interaction. Works in Node.js and browsers.","homepage":"https://asentum.com","keywords":["asentum","blockchain","sdk","dilithium","post-quantum","wallet","ethereum-rpc"],"repository":{"type":"git","url":"git+https://github.com/asentum-network/sdk.git"},"bugs":{"url":"https://github.com/asentum-network/sdk/issues"},"license":"Apache-2.0","readme":"# @asentum/sdk\n\nTypeScript SDK for building on Asentum. Three classes, one import, works\nin Node.js and browsers.\n\n```bash\nnpm install @asentum/sdk\n```\n\n## Quick start\n\n```ts\nimport { AsentumClient, AsentumWallet } from '@asentum/sdk';\n\nconst client = new AsentumClient('https://testnet.asentum.com');\nconst wallet = AsentumWallet.create(client);\n\n// Fund from the testnet faucet\nawait wallet.requestFaucet();\n\n// Check balance\nconst balance = await wallet.getBalance();\nconsole.log(balance); // 100000000000000000000n (100 ASE)\n\n// Send ASE\nconst tx = await wallet.sendTransfer({\n  to: '0x1111111111111111111111111111111111111111',\n  amount: '10',\n});\nconst receipt = await tx.wait();\nconsole.log('confirmed in block', receipt.blockNumber);\n```\n\n## Deploy and interact with a contract\n\n```ts\n// Deploy\nconst contract = await wallet.deploy(`\n  function init() {\n    storage.set('greeting', 'hello world');\n    emit('Init', { sender: msg.sender });\n  }\n\n  function getGreeting() {\n    return storage.get('greeting');\n  }\n\n  function setGreeting(value) {\n    storage.set('greeting', value);\n    emit('Updated', { value });\n  }\n`);\nconsole.log('contract:', contract.address);\n\n// Initialize\nconst initTx = await contract.send('init');\nawait initTx.wait();\n\n// Read (free, no tx)\nconst greeting = await contract.view('getGreeting');\nconsole.log(greeting); // \"hello world\"\n\n// Write (sends a tx)\nconst setTx = await contract.send('setGreeting', ['gm asentum']);\nawait setTx.wait();\n\nconsole.log(await contract.view('getGreeting')); // \"gm asentum\"\n```\n\n## API\n\n### `AsentumClient`\n\nRead-only interface to the chain. No keys, no signing: just reads.\n\n```ts\nconst client = new AsentumClient('https://testnet.asentum.com');\n\nawait client.getBlockNumber();           // number\nawait client.getChainId();               // bigint\nawait client.getBlock(42);               // Block | null\nawait client.getBalance('0x...');        // { address, balance, nonce }\nawait client.getNonce('0x...');          // bigint\nawait client.getReceipt('0xabc...');     // Receipt | null\nawait client.getCode('0x...');           // hex string\nawait client.getContractSource('0x...');  // JS source string | null\nawait client.viewCall('0x...', 'name');  // ViewCallResult\nawait client.getValidators();            // { count, validators[] }\nawait client.getMetadata();              // EIP-3085 metadata\nawait client.isHealthy();                // boolean\nawait client.faucet('0x...');            // TxResult (testnet only)\n```\n\n### `AsentumWallet`\n\nA client + Dilithium3 keypair. Can sign and submit transactions.\n\n```ts\n// Create random\nconst wallet = AsentumWallet.create(client);\n\n// From seed (deterministic)\nconst wallet2 = AsentumWallet.fromSeed(client, seed32bytes);\n\n// From exported keys\nconst wallet3 = AsentumWallet.fromSecretKey(client, '0xsk...', '0xpk...');\n\nwallet.address;        // '0x...' checksummed\nwallet.secretKeyHex;   // for backup\nwallet.publicKeyHex;\n\nawait wallet.getBalance();     // bigint (wei)\nawait wallet.getNonce();       // bigint\nawait wallet.requestFaucet();  // TxResult\n\n// Send transfer\nconst tx = await wallet.sendTransfer({ to: '0x...', amount: '1.5' });\nconst receipt = await tx.wait();\n\n// Deploy contract\nconst contract = await wallet.deploy('function init() { ... }');\n\n// Call contract (write)\nconst tx2 = await wallet.sendCall({\n  to: '0x...',\n  method: 'transfer',\n  args: ['0xbob...', '100'],\n});\n```\n\n### `AsentumContract`\n\nA deployed contract with view + send helpers.\n\n```ts\n// From a deploy\nconst contract = await wallet.deploy(source);\n\n// Or wrap an existing address\nimport { AsentumContract } from '@asentum/sdk';\nconst contract = new AsentumContract(client, '0xcontract...');\n\n// Read (free)\nconst result = await contract.view('balanceOf', ['0x...']);\n\n// Read with full result (includes gas + events)\nconst full = await contract.viewFull('balanceOf', ['0x...']);\n\n// Write (needs wallet)\nconst tx = await contract.send('transfer', ['0x...', '100']);\nawait tx.wait();\n\n// Attach a wallet for future send() calls\nconst signed = contract.connect(wallet);\nawait signed.send('transfer', ['0x...', '50']);\n\n// Get source code\nconst source = await contract.getSource();\n\n// Wait for deploy confirmation\nawait contract.waitForDeploy();\n```\n\n### Helpers\n\n```ts\nimport { parseAse, formatAse } from '@asentum/sdk';\n\nparseAse('1');      // 1000000000000000000n (1 ASE in wei)\nparseAse('0.5');    // 500000000000000000n\nparseAse(100n);     // 100n (already wei)\n\nformatAse(1500000000000000000n);  // \"1.5\"\nformatAse('1000000000000000000'); // \"1\"\n```\n\n## How it works\n\nThe SDK wraps the node's HTTP RPC endpoints:\n\n| SDK method | RPC endpoint |\n|------------|-------------|\n| `getBlock(n)` | `GET /block/{n}` |\n| `getBalance(addr)` | `GET /balance/{addr}` |\n| `viewCall(addr, method, args)` | `POST /view` |\n| `sendTransfer/sendCall/deploy` | `POST /tx` (signed SSZ bytes) |\n| `getCode(addr)` | `POST / eth_getCode` (JSON-RPC) |\n| `faucet(addr)` | `POST /dev/faucet` |\n\nTransactions are built via SSZ schemas from `@asentum/types`, hashed\nwith BLAKE3, signed with Dilithium3 from `@asentum/crypto`, and\nsubmitted as hex-encoded wire bytes. The entire signing pipeline runs\nlocally: private keys never leave your process.\n\n## Requirements\n\n- Node.js 22+ or any modern browser with `fetch` and `crypto.getRandomValues`\n- An Asentum RPC endpoint (the public testnet is at `https://testnet.asentum.com`)\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md","_rev":"1-67c6081d33755b75da50cac26eadae67"}