SDK Examples
Complete integration examples for different environments.React
import { ArgyrosSDK, NoRouteError } from "@argyros/sdk";
import type { QuoteResponse } from "@argyros/sdk";
import { useEffect, useState } from "react";
const sdk = new ArgyrosSDK({ apiKey: "argy_your_api_key" });
function SwapPage() {
const [quote, setQuote] = useState<QuoteResponse | null>(null);
const [error, setError] = useState("");
async function fetchQuote(amount: string) {
setError("");
try {
const q = await sdk.quote({
inputMint: "So11111111111111111111111111111111111111112",
outputMint: "uSd2czE61Evaf76RNbq4KPpXnkiL3irdzgLFUMe3NoG",
amount,
swapMode: "ExactIn",
slippageBps: 50,
});
setQuote(q);
} catch (err) {
if (err instanceof NoRouteError) {
setError("No route found");
} else {
setError("Quote failed");
}
}
}
return (
<div>
<input
type="text"
placeholder="Amount in lamports"
onChange={(e) => fetchQuote(e.target.value)}
/>
{quote && (
<p>
Output: {quote.amountOut} | Impact: {quote.priceImpactPercent}
</p>
)}
{error && <p style={{ color: "red" }}>{error}</p>}
</div>
);
}
Next.js (App Router)
"use client";
import { ArgyrosSDK } from "@argyros/sdk";
import type { SwapResponse } from "@argyros/sdk";
import { useWallet, useConnection } from "@solana/wallet-adapter-react";
import { VersionedTransaction } from "@solana/web3.js";
import { useState } from "react";
const sdk = new ArgyrosSDK({ apiKey: process.env.NEXT_PUBLIC_ARGYROS_KEY! });
export default function SwapButton() {
const { publicKey, signTransaction } = useWallet();
const { connection } = useConnection();
const [loading, setLoading] = useState(false);
async function handleSwap() {
if (!publicKey || !signTransaction) return;
setLoading(true);
try {
const swap = await sdk.swap({
userWallet: publicKey.toBase58(),
inputMint: "So11111111111111111111111111111111111111112",
outputMint: "uSd2czE61Evaf76RNbq4KPpXnkiL3irdzgLFUMe3NoG",
amount: "1000000000",
swapMode: "ExactIn",
slippageBps: 50,
});
const tx = VersionedTransaction.deserialize(
Buffer.from(swap.transaction, "base64")
);
const signed = await signTransaction(tx);
const sig = await connection.sendRawTransaction(signed.serialize());
await connection.confirmTransaction({
signature: sig,
lastValidBlockHeight: swap.lastValidBlockHeight,
blockhash: tx.message.recentBlockhash,
});
console.log("Swap confirmed:", sig);
} finally {
setLoading(false);
}
}
return (
<button onClick={handleSwap} disabled={loading || !publicKey}>
{loading ? "Swapping..." : "Swap 1 SOL → USDC"}
</button>
);
}
Node.js
const { ArgyrosSDK } = require("@argyros/sdk");
const { Connection, VersionedTransaction, Keypair } = require("@solana/web3.js");
const bs58 = require("bs58");
async function main() {
const sdk = new ArgyrosSDK({
apiKey: process.env.ARGYROS_API_KEY,
});
const wallet = Keypair.fromSecretKey(bs58.decode(process.env.WALLET_KEY));
const connection = new Connection(process.env.RPC_URL);
// Quote
const quote = await sdk.quote({
inputMint: "So11111111111111111111111111111111111111112",
outputMint: "uSd2czE61Evaf76RNbq4KPpXnkiL3irdzgLFUMe3NoG",
amount: "1000000000",
swapMode: "ExactIn",
});
console.log("Quote:", quote.amountOut, "USDC");
// Swap
const swap = await sdk.swap({
userWallet: wallet.publicKey.toBase58(),
inputMint: "So11111111111111111111111111111111111111112",
outputMint: "uSd2czE61Evaf76RNbq4KPpXnkiL3irdzgLFUMe3NoG",
amount: "1000000000",
swapMode: "ExactIn",
slippageBps: 50,
});
const tx = VersionedTransaction.deserialize(
Buffer.from(swap.transaction, "base64")
);
tx.sign([wallet]);
const sig = await connection.sendTransaction(tx, { maxRetries: 3 });
console.log("Submitted:", sig);
const confirmation = await connection.confirmTransaction({
signature: sig,
lastValidBlockHeight: swap.lastValidBlockHeight,
blockhash: tx.message.recentBlockhash,
});
console.log(confirmation.value.err ? "Failed" : "Confirmed");
}
main().catch(console.error);
Browser / CDN
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.argyros.trade/sdk.umd.js"></script>
</head>
<body>
<button id="quote-btn">Get Quote</button>
<pre id="result"></pre>
<script>
const sdk = new ArgyrosSDK({ apiKey: "argy_your_api_key" });
document.getElementById("quote-btn").addEventListener("click", async () => {
try {
const quote = await sdk.quote({
inputMint: "So11111111111111111111111111111111111111112",
outputMint: "uSd2czE61Evaf76RNbq4KPpXnkiL3irdzgLFUMe3NoG",
amount: "1000000000",
swapMode: "ExactIn",
});
document.getElementById("result").textContent = JSON.stringify(quote, null, 2);
} catch (err) {
document.getElementById("result").textContent = err.message;
}
});
</script>
</body>
</html>
ExactOut Mode
const quote = await sdk.quote({
inputMint: "So11111111111111111111111111111111111111112",
outputMint: "uSd2czE61Evaf76RNbq4KPpXnkiL3irdzgLFUMe3NoG",
amount: "100000000", // I want exactly 100 USDC
swapMode: "ExactOut",
slippageBps: 100,
});
console.log(`Need ${quote.amountIn} lamports of SOL to get 100 USDC`);