@kaspacom/swap-sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,70 @@
1
+ import { Trade } from "@uniswap/v2-sdk";
2
+ import { SwapSdkNetworkConfig } from "./networks";
3
+ import { Currency, TradeType } from "@uniswap/sdk-core";
4
+ export interface Erc20Token {
5
+ address: string;
6
+ symbol: string;
7
+ name: string;
8
+ decimals: number;
9
+ balance?: number;
10
+ rawBalance?: string;
11
+ logoURI?: string;
12
+ }
13
+ export interface SwapSettings {
14
+ maxSlippage: string;
15
+ swapDeadline: number;
16
+ }
17
+ export interface SwapState {
18
+ needsApproval: boolean;
19
+ isApproved: boolean;
20
+ isApproving: boolean;
21
+ isSwapping: boolean;
22
+ error: string | null;
23
+ success: boolean;
24
+ transactionHash: string | null;
25
+ status: string | null;
26
+ expectedAmountOut: string | null;
27
+ isCalculating: boolean;
28
+ }
29
+ export interface SwapSectionData {
30
+ title: string;
31
+ amount: string;
32
+ usdValue: string;
33
+ }
34
+ export interface SwapSdkOptions {
35
+ networkConfig: SwapSdkNetworkConfig | string;
36
+ walletProvider: any;
37
+ partnerKey?: string;
38
+ onChange?: (state: SwapControllerOutput, patch: Partial<SwapControllerOutput>) => Promise<void>;
39
+ }
40
+ export interface SwapControllerInput {
41
+ fromToken?: Erc20Token | null;
42
+ toToken?: Erc20Token | null;
43
+ amount?: number;
44
+ isOutputAmount?: boolean;
45
+ settings?: Partial<SwapSettings>;
46
+ }
47
+ export declare enum LoaderStatuses {
48
+ CALCULATING_QUOTE = 1,
49
+ APPROVING = 2,
50
+ SWAPPING = 3
51
+ }
52
+ export interface ComputedAmounts {
53
+ maxAmountIn?: string;
54
+ minAmountOut?: string;
55
+ amountIn: string;
56
+ amountOut: string;
57
+ amountInRaw: string;
58
+ amountOutRaw: string;
59
+ maxAmountInRaw?: string;
60
+ minAmountOutRaw?: string;
61
+ }
62
+ export interface SwapControllerOutput {
63
+ error?: string;
64
+ txHash?: string;
65
+ approveTxHash?: string;
66
+ tradeInfo?: Trade<Currency, Currency, TradeType.EXACT_INPUT> | Trade<Currency, Currency, TradeType.EXACT_OUTPUT>;
67
+ computed?: ComputedAmounts;
68
+ loader: LoaderStatuses | null;
69
+ }
70
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,oBAAoB,GAAG,MAAM,CAAC;IAC7C,cAAc,EAAE,GAAG,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,OAAO,CAAC,oBAAoB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjG;AAID,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAClC;AAED,oBAAY,cAAc;IACxB,iBAAiB,IAAI;IACrB,SAAS,IAAI;IACb,QAAQ,IAAI;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;IACjH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;CAC/B"}
@@ -0,0 +1,7 @@
1
+ export var LoaderStatuses;
2
+ (function (LoaderStatuses) {
3
+ LoaderStatuses[LoaderStatuses["CALCULATING_QUOTE"] = 1] = "CALCULATING_QUOTE";
4
+ LoaderStatuses[LoaderStatuses["APPROVING"] = 2] = "APPROVING";
5
+ LoaderStatuses[LoaderStatuses["SWAPPING"] = 3] = "SWAPPING";
6
+ })(LoaderStatuses || (LoaderStatuses = {}));
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAuDA,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,6EAAqB,CAAA;IACrB,6DAAa,CAAA;IACb,2DAAY,CAAA;AACd,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB"}
@@ -0,0 +1,14 @@
1
+ export interface SwapSdkNetworkConfig {
2
+ name: string;
3
+ chainId: number;
4
+ rpcUrl: string;
5
+ routerAddress: string;
6
+ factoryAddress: string;
7
+ proxyAddress?: string;
8
+ wethAddress: string;
9
+ graphEndpoint: string;
10
+ blockExplorerUrl?: string;
11
+ additionalJsonRpcApiProviderOptionsOptions?: any;
12
+ }
13
+ export declare const NETWORKS: Record<string, SwapSdkNetworkConfig>;
14
+ //# sourceMappingURL=networks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networks.d.ts","sourceRoot":"","sources":["../../src/types/networks.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,0CAA0C,CAAC,EAAE,GAAG,CAAC;CAClD;AAED,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAkBzD,CAAC"}
@@ -0,0 +1,20 @@
1
+ export const NETWORKS = {
2
+ 'kasplex-testnet': {
3
+ name: 'Kasplex Test',
4
+ chainId: 167012,
5
+ rpcUrl: 'https://rpc.kasplextest.xyz',
6
+ routerAddress: '0x5A410f79f58a11344E3523d99820Cf231bc888bd',
7
+ factoryAddress: '0x772B3321B37C1a9aeF0Da1B5A6453E1C2A264beF',
8
+ proxyAddress: '0xbE448f863d2bB7bCcD9185A854DF2D8d63498dB0',
9
+ wethAddress: '0x654A3287c317D4Fc6e8482FeF523Dc4572b563AA',
10
+ graphEndpoint: 'https://dev-graph-kasplex.kaspa.com/subgraphs/name/uniswap-v2',
11
+ blockExplorerUrl: 'https://explorer.testnet.kasplextest.xyz',
12
+ additionalJsonRpcApiProviderOptionsOptions: {
13
+ batchMaxCount: 1,
14
+ batchMaxSize: 1,
15
+ batchStallTime: 0,
16
+ },
17
+ },
18
+ // Add more networks as needed
19
+ };
20
+ //# sourceMappingURL=networks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networks.js","sourceRoot":"","sources":["../../src/types/networks.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,QAAQ,GAAyC;IAC5D,iBAAiB,EAAE;QACjB,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,6BAA6B;QACrC,aAAa,EAAE,4CAA4C;QAC3D,cAAc,EAAE,4CAA4C;QAC5D,YAAY,EAAE,4CAA4C;QAC1D,WAAW,EAAE,4CAA4C;QACzD,aAAa,EAAE,+DAA+D;QAC9E,gBAAgB,EAAE,0CAA0C;QAC5D,0CAA0C,EAAE;YAC1C,aAAa,EAAE,CAAC;YAChB,YAAY,EAAE,CAAC;YACf,cAAc,EAAE,CAAC;SAClB;KACF;IACD,8BAA8B;CAC/B,CAAC"}
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@kaspacom/swap-sdk",
3
+ "version": "1.0.0",
4
+ "description": "A lightweight swap sdk for Kaspa DeFi that can be embedded in wallets or websites",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "files": [
9
+ "dist",
10
+ "README.md"
11
+ ],
12
+ "scripts": {
13
+ "dev": "npm run dev:browser",
14
+ "dev:browser": "esbuild src/index.ts --bundle --format=iife --global-name=KaspacomSwapSdk --outfile=dist/swap-sdk.js --watch",
15
+ "clean": "rimraf dist",
16
+ "prebuild": "npm run clean",
17
+ "prepublishOnly": "npm run build",
18
+ "build": "tsc && npm run build:browser",
19
+ "build:browser": "esbuild src/index.ts --bundle --format=iife --global-name=KaspacomSwapSdk --outfile=dist/swap-sdk.js",
20
+ "types": "tsc --emitDeclarationOnly",
21
+ "test": "jest",
22
+ "lint": "eslint src --ext .ts,.tsx"
23
+ },
24
+ "keywords": [
25
+ "kaspa",
26
+ "defi",
27
+ "swap",
28
+ "sdk",
29
+ "wallet",
30
+ "ethereum",
31
+ "uniswap"
32
+ ],
33
+ "author": "Kaspa Team",
34
+ "license": "MIT",
35
+ "dependencies": {
36
+ "@uniswap/sdk-core": "^7.7.2",
37
+ "@uniswap/v2-sdk": "^4.15.2",
38
+ "ethers": "^6.14.0",
39
+ "rxjs": "~7.8.0"
40
+ },
41
+ "devDependencies": {
42
+ "@types/jest": "^29.5.12",
43
+ "@typescript-eslint/eslint-plugin": "^8.19.0",
44
+ "@typescript-eslint/parser": "^8.19.0",
45
+ "esbuild": "^0.19.0",
46
+ "eslint": "^9.8.0",
47
+ "jest": "^29.7.0",
48
+ "rimraf": "^6.0.1",
49
+ "typescript": "~5.7.2"
50
+ },
51
+ "repository": {
52
+ "type": "git",
53
+ "url": "https://github.com/KASPACOM/swap-sdk"
54
+ },
55
+ "bugs": {
56
+ "url": "https://github.com/KASPACOM/swap-sdk/issues"
57
+ },
58
+ "homepage": "https://github.com/KASPACOM/swap-sdk#readme"
59
+ }