One Click SDK - TypeScript
A powerful TypeScript SDK for seamless cross-chain token swaps using the 1Click API. Built with type safety in mind, this SDK enables developers to easily integrate cross-chain swapping functionality into their applications with minimal setup.
Prerequisites
Installation
npm install @defuse-protocol/one-click-sdk-typescript
yarn add @defuse-protocol/one-click-sdk-typescript
pnpm add @defuse-protocol/one-click-sdk-typescript
Quick Start
import { OpenAPI, QuoteRequest, OneClickService } from '@defuse-protocol/one-click-sdk-typescript';
OpenAPI.BASE = 'https://1click.chaindefuser.com';
OpenAPI.TOKEN = "your-JSON-Web-Token";
const quoteRequest: QuoteRequest = {
dry: true,
swapType: QuoteRequest.swapType.EXACT_INPUT,
slippageTolerance: 100,
originAsset: 'nep141:arb-0xaf88d065e77c8cc2239327c5edb3a432268e5831.omft.near',
depositType: QuoteRequest.depositType.ORIGIN_CHAIN,
destinationAsset: 'nep141:sol-5ce3bf3a31af18be40ba30f721101b4341690186.omft.near',
amount: '1000000',
refundTo: '0x2527D02599Ba641c19FEa793cD0F167589a0f10D',
refundType: QuoteRequest.refundType.ORIGIN_CHAIN,
recipient: '13QkxhNMrTPxoCkRdYdJ65tFuwXPhL5gLS2Z5Nr6gjRK',
recipientType: QuoteRequest.recipientType.DESTINATION_CHAIN,
deadline: "2025-08-06T14:15:22Z"
};
const quote = await OneClickService.getQuote(quoteRequest);
API Methods
See official API docs for more info on endpoints.
Get Quote
const quote = await OneClickService.getQuote(quoteRequest);
Get Execution Status
const status = await OneClickService.getExecutionStatus(depositAddress);
Submit Deposit Transaction
const result = await OneClickService.submitDepositTx({
txHash: '0x...',
depositAddress: '0x...'
});
Authentication
The 1Click API requires JWT authentication for most endpoints -> Request yours here
Static Token (Required)
OpenAPI.TOKEN = 'your-JSON-Web-Token';
Dynamic Token Provider (for token refresh)
OpenAPI.TOKEN = async () => {
return 'FRESH_JWT';
};
Protected Endpoints
The following endpoints require JWT authentication:
OneClickService.getQuote()
OneClickService.submitDepositTx()
OneClickService.getExecutionStatus()
Error Handling
The SDK throws typed errors that you can catch and handle:
try {
const quote = await OneClickService.getQuote(quoteRequest);
} catch (error) {
if (error instanceof ApiError && error.status === 401) {
console.error('Authentication failed: JWT is missing or invalid');
} else if (error instanceof ApiError && error.status === 400) {
console.error('Invalid request:', error.body);
} else {
console.error('Error:', error);
}
}
License
ISC - See LICENSE for details.
For Developers
For SDK developers (not SDK users), here are the development commands:
pnpm install
pnpm generate:fresh
pnpm build
pnpm clean