@magicnewton/newton-shield-sdk
v0.1.2
Published
TypeScript SDK for accepting ERC-20 deposits on Ethereum/Base Sepolia, secured by the Newton Protocol.
Readme
@magicnewton/newton-shield-sdk
TypeScript SDK for accepting ERC-20 deposits on Ethereum Sepolia (11155111) or Base Sepolia (84532), secured through the Newton Protocol.
The SDK exposes the full deposit lifecycle behind one deposit() call: wallet connection, network switch, ERC-20 approval, Newton task evaluation, and on-chain executeIntent transaction. Wallet connectivity is provided via the Aurum SDK; consumers don't configure any wallet UI directly.
Demo
- live: https://newton-shield-demo.vercel.app
- repo: https://github.com/newt-foundation/newton-shield-demo
Install
pnpm add @magicnewton/newton-shield-sdk viemUsage
import { NewtonShield } from '@magicnewton/newton-shield-sdk';
import { parseUnits } from 'viem';
const shield = new NewtonShield({
apiKey: process.env.NEWTON_API_KEY!,
policyClientAddress: '0xYourPolicyClient',
chainId: 11155111, // or 84532 for Base Sepolia
walletConnectProjectId: process.env.WC_PROJECT_ID, // optional
});
const result = await shield.deposit({
amount: parseUnits('1', 6), // 1 USDC
token: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238', // USDC on Sepolia
destinationAddress: '0xYourTreasury',
onStatus: ({ step }) => console.log(step),
});
// { depositTxHash, taskId, approvalTxHash? }All errors thrown by the SDK extend NewtonShieldError and expose a typed code. Use instanceof against the exported subclasses (WalletConnectionRejectedError, TransactionRejectedError, ApprovalFailedError, NewtonTaskEvaluationError, DepositTransactionFailedError, InvalidConfigurationError, ConcurrentDepositError) to drive UI.
Additional instance methods: getAccount(), disconnect(), onAccountChange(callback) for minimal wallet-session UI without reaching into Aurum directly.
Local development
Requires Node ≥20 and pnpm ≥9.
pnpm install # install deps
pnpm build # produce dist/ (CJS + ESM + .d.ts)
pnpm typecheck # tsc --noEmit
pnpm dev # tsup watch modeTo test against a consumer app without publishing, link the SDK into the consumer's package.json:
"@magicnewton/newton-shield-sdk": "link:../newton-shield-sdk"Then pnpm install in the consumer.
License
Apache-2.0
