@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.
- package/LICENSE +21 -0
- package/README.md +246 -0
- package/dist/controllers/swap-sdk.controller.d.ts +23 -0
- package/dist/controllers/swap-sdk.controller.d.ts.map +1 -0
- package/dist/controllers/swap-sdk.controller.js +166 -0
- package/dist/controllers/swap-sdk.controller.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/services/swap.service.d.ts +103 -0
- package/dist/services/swap.service.d.ts.map +1 -0
- package/dist/services/swap.service.js +550 -0
- package/dist/services/swap.service.js.map +1 -0
- package/dist/services/wallet.service.d.ts +27 -0
- package/dist/services/wallet.service.d.ts.map +1 -0
- package/dist/services/wallet.service.js +169 -0
- package/dist/services/wallet.service.js.map +1 -0
- package/dist/swap-sdk.js +33120 -0
- package/dist/types/index.d.ts +70 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/networks.d.ts +14 -0
- package/dist/types/networks.d.ts.map +1 -0
- package/dist/types/networks.js +20 -0
- package/dist/types/networks.js.map +1 -0
- package/package.json +59 -0
|
@@ -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
|
+
}
|