@folks-router/js-sdk 0.1.1 → 0.3.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/README.md +18 -5
- package/dist/FolksRouterClient.d.mts +2 -1
- package/dist/FolksRouterClient.d.ts +2 -1
- package/dist/FolksRouterClient.js +7 -6
- package/dist/FolksRouterClient.js.map +1 -1
- package/dist/FolksRouterClient.mjs +6 -5
- package/dist/abiContracts/index.js +2 -2
- package/dist/abiContracts/index.js.map +1 -1
- package/dist/abiContracts/index.mjs +1 -1
- package/dist/checks.d.mts +6 -0
- package/dist/checks.d.ts +6 -0
- package/dist/checks.js +12 -0
- package/dist/checks.js.map +1 -0
- package/dist/checks.mjs +12 -0
- package/dist/checks.mjs.map +1 -0
- package/dist/{chunk-PT53HHNS.js → chunk-BVY7JBOW.js} +6 -6
- package/dist/chunk-BVY7JBOW.js.map +1 -0
- package/dist/chunk-DHU34JLH.mjs +74 -0
- package/dist/chunk-DHU34JLH.mjs.map +1 -0
- package/dist/{chunk-275BCIHG.mjs → chunk-EYGQH356.mjs} +13 -1
- package/dist/chunk-EYGQH356.mjs.map +1 -0
- package/dist/{chunk-FEVMPFNU.mjs → chunk-GQO2R6ON.mjs} +2 -2
- package/dist/{chunk-QLPM3CZI.js → chunk-GRBEXEIP.js} +6 -6
- package/dist/chunk-GRBEXEIP.js.map +1 -0
- package/dist/{chunk-HEZCGFMA.js → chunk-GTEUZNDL.js} +8 -2
- package/dist/chunk-GTEUZNDL.js.map +1 -0
- package/dist/{chunk-SAI2MUH2.mjs → chunk-GWQ2U3UO.mjs} +3 -3
- package/dist/{chunk-T37SGVC7.js → chunk-IVNVWRCM.js} +2 -2
- package/dist/chunk-IVNVWRCM.js.map +1 -0
- package/dist/{chunk-UBBN3ZYC.mjs → chunk-LE66KKNU.mjs} +10 -4
- package/dist/chunk-LE66KKNU.mjs.map +1 -0
- package/dist/chunk-MEC4OKES.js.map +1 -1
- package/dist/chunk-SADXHAXY.js +74 -0
- package/dist/chunk-SADXHAXY.js.map +1 -0
- package/dist/chunk-V4ANJGMA.js +76 -0
- package/dist/chunk-V4ANJGMA.js.map +1 -0
- package/dist/chunk-VGT24JDM.mjs +7 -0
- package/dist/{chunk-Z537KBSF.mjs.map → chunk-VGT24JDM.mjs.map} +1 -1
- package/dist/{chunk-J5OA3X2H.js → chunk-WKV4G7E6.js} +13 -1
- package/dist/chunk-WKV4G7E6.js.map +1 -0
- package/dist/chunk-WPZIOEUM.mjs +76 -0
- package/dist/chunk-WPZIOEUM.mjs.map +1 -0
- package/dist/{chunk-XVPB7BHI.js → chunk-WSXBJBEU.js} +2 -2
- package/dist/chunk-WSXBJBEU.js.map +1 -0
- package/dist/chunk-YMVA5ZDD.mjs +7 -0
- package/dist/{chunk-P22I3FWL.mjs.map → chunk-YMVA5ZDD.mjs.map} +1 -1
- package/dist/constants/mainnetConstants.d.mts +1 -1
- package/dist/constants/mainnetConstants.d.ts +1 -1
- package/dist/constants/mainnetConstants.js +2 -2
- package/dist/constants/mainnetConstants.js.map +1 -1
- package/dist/constants/mainnetConstants.mjs +1 -1
- package/dist/constants/testnetConstants.d.mts +1 -1
- package/dist/constants/testnetConstants.d.ts +1 -1
- package/dist/constants/testnetConstants.js +2 -2
- package/dist/constants/testnetConstants.js.map +1 -1
- package/dist/constants/testnetConstants.mjs +1 -1
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +13 -9
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +13 -9
- package/dist/referrer.js +3 -3
- package/dist/referrer.js.map +1 -1
- package/dist/referrer.mjs +2 -2
- package/dist/swap.js +4 -4
- package/dist/swap.js.map +1 -1
- package/dist/swap.mjs +3 -3
- package/dist/types.d.mts +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils.js +2 -2
- package/dist/utils.js.map +1 -1
- package/dist/utils.mjs +1 -1
- package/package.json +4 -4
- package/dist/chunk-275BCIHG.mjs.map +0 -1
- package/dist/chunk-HEZCGFMA.js.map +0 -1
- package/dist/chunk-J5OA3X2H.js.map +0 -1
- package/dist/chunk-P22I3FWL.mjs +0 -7
- package/dist/chunk-PT53HHNS.js.map +0 -1
- package/dist/chunk-PYVHIBBZ.mjs +0 -133
- package/dist/chunk-PYVHIBBZ.mjs.map +0 -1
- package/dist/chunk-QLPM3CZI.js.map +0 -1
- package/dist/chunk-T37SGVC7.js.map +0 -1
- package/dist/chunk-UBBN3ZYC.mjs.map +0 -1
- package/dist/chunk-XNH4DJ6G.js +0 -133
- package/dist/chunk-XNH4DJ6G.js.map +0 -1
- package/dist/chunk-XVPB7BHI.js.map +0 -1
- package/dist/chunk-Z537KBSF.mjs +0 -7
- /package/dist/{chunk-FEVMPFNU.mjs.map → chunk-GQO2R6ON.mjs.map} +0 -0
- /package/dist/{chunk-SAI2MUH2.mjs.map → chunk-GWQ2U3UO.mjs.map} +0 -0
package/README.md
CHANGED
|
@@ -24,7 +24,7 @@ Documentation for this SDK is available at [folksrouter.io](https://folksrouter.
|
|
|
24
24
|
## Usage
|
|
25
25
|
|
|
26
26
|
```ts
|
|
27
|
-
import { FolksRouterClient, Network, SwapMode } from "@folks-router/js-sdk";
|
|
27
|
+
import { FolksRouterClient, Network, SwapMode, SwapParams } from "@folks-router/js-sdk";
|
|
28
28
|
import { Algodv2, decodeUnsignedTransaction, generateAccount } from "algosdk";
|
|
29
29
|
|
|
30
30
|
const senderAccount = generateAccount();
|
|
@@ -32,17 +32,30 @@ const algodClient = new Algodv2("", "https://mainnet-api.algonode.cloud/", 443);
|
|
|
32
32
|
const folksRouterClient = new FolksRouterClient(Network.MAINNET);
|
|
33
33
|
|
|
34
34
|
async function main() {
|
|
35
|
+
// Construct Swap Params
|
|
36
|
+
const swapParams: SwapParams = {
|
|
37
|
+
fromAssetId: 0,
|
|
38
|
+
toAssetId: 31566704,
|
|
39
|
+
amount: BigInt(10e6),
|
|
40
|
+
swapMode: SwapMode.FIXED_INPUT,
|
|
41
|
+
};
|
|
42
|
+
|
|
35
43
|
// Fetch Swap Quote
|
|
36
|
-
const swapQuote = await folksRouterClient.fetchSwapQuote(
|
|
44
|
+
const swapQuote = await folksRouterClient.fetchSwapQuote(swapParams);
|
|
37
45
|
|
|
38
46
|
// Prepare Swap Transactions
|
|
39
|
-
const
|
|
40
|
-
|
|
47
|
+
const base64Txns = await folksRouterClient.prepareSwapTransactions(
|
|
48
|
+
swapParams,
|
|
49
|
+
senderAccount.addr,
|
|
50
|
+
BigInt(10),
|
|
51
|
+
swapQuote,
|
|
52
|
+
);
|
|
53
|
+
const unsignedTxns = base64Txns.map((txn) => decodeUnsignedTransaction(Buffer.from(txn, "base64")));
|
|
41
54
|
const signedTxns = unsignedTxns.map((txn) => txn.signTxn(senderAccount.sk));
|
|
42
55
|
|
|
43
56
|
// Submit Transaction
|
|
44
57
|
await algodClient.sendRawTransaction(signedTxns).do();
|
|
45
58
|
}
|
|
46
59
|
|
|
47
|
-
main();
|
|
60
|
+
main().catch(console.error);
|
|
48
61
|
```
|
|
@@ -4,7 +4,8 @@ declare class FolksRouterClient {
|
|
|
4
4
|
private readonly network;
|
|
5
5
|
private readonly api;
|
|
6
6
|
constructor(network: Network, apiKey?: string);
|
|
7
|
-
|
|
7
|
+
fetchUserDiscount(userAddress: string): Promise<number>;
|
|
8
|
+
fetchSwapQuote(params: SwapParams, maxGroupSize?: number, feeBps?: number | bigint, userFeeDiscount?: number | bigint, referrer?: string): Promise<SwapQuote>;
|
|
8
9
|
prepareSwapTransactions(params: SwapParams, userAddress: string, slippageBps: number | bigint, swapQuote: SwapQuote): Promise<SwapTransactions>;
|
|
9
10
|
}
|
|
10
11
|
|
|
@@ -4,7 +4,8 @@ declare class FolksRouterClient {
|
|
|
4
4
|
private readonly network;
|
|
5
5
|
private readonly api;
|
|
6
6
|
constructor(network: Network, apiKey?: string);
|
|
7
|
-
|
|
7
|
+
fetchUserDiscount(userAddress: string): Promise<number>;
|
|
8
|
+
fetchSwapQuote(params: SwapParams, maxGroupSize?: number, feeBps?: number | bigint, userFeeDiscount?: number | bigint, referrer?: string): Promise<SwapQuote>;
|
|
8
9
|
prepareSwapTransactions(params: SwapParams, userAddress: string, slippageBps: number | bigint, swapQuote: SwapQuote): Promise<SwapTransactions>;
|
|
9
10
|
}
|
|
10
11
|
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('./chunk-
|
|
3
|
+
var _chunkV4ANJGMAjs = require('./chunk-V4ANJGMA.js');
|
|
4
|
+
require('./chunk-SADXHAXY.js');
|
|
5
|
+
require('./chunk-WSXBJBEU.js');
|
|
6
|
+
require('./chunk-IVNVWRCM.js');
|
|
5
7
|
require('./chunk-MEC4OKES.js');
|
|
6
|
-
require('./chunk-
|
|
7
|
-
require('./chunk-
|
|
8
|
-
require('./chunk-XVPB7BHI.js');
|
|
8
|
+
require('./chunk-GTEUZNDL.js');
|
|
9
|
+
require('./chunk-WKV4G7E6.js');
|
|
9
10
|
|
|
10
11
|
|
|
11
|
-
exports.FolksRouterClient =
|
|
12
|
+
exports.FolksRouterClient = _chunkV4ANJGMAjs.FolksRouterClient;
|
|
12
13
|
//# sourceMappingURL=FolksRouterClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/FolksRouterClient.js"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACF,+DAAC","file":"/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/FolksRouterClient.js"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
FolksRouterClient
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-WPZIOEUM.mjs";
|
|
4
|
+
import "./chunk-DHU34JLH.mjs";
|
|
5
|
+
import "./chunk-VGT24JDM.mjs";
|
|
6
|
+
import "./chunk-YMVA5ZDD.mjs";
|
|
5
7
|
import "./chunk-CV77XZT3.mjs";
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-Z537KBSF.mjs";
|
|
8
|
+
import "./chunk-LE66KKNU.mjs";
|
|
9
|
+
import "./chunk-EYGQH356.mjs";
|
|
9
10
|
export {
|
|
10
11
|
FolksRouterClient
|
|
11
12
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkWKV4G7E6js = require('../chunk-WKV4G7E6.js');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
exports.routerABIContract =
|
|
6
|
+
exports.routerABIContract = _chunkWKV4G7E6js.routerABIContract;
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/abiContracts/index.js"],"names":[],"mappings":"AAAA;AACE;AACF,uDAA6B;AAC7B;AACE;AACF,+DAAC","file":"/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/abiContracts/index.js"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Transaction } from 'algosdk';
|
|
2
|
+
import { Network, SwapParams, SwapQuote } from './types.mjs';
|
|
3
|
+
|
|
4
|
+
declare function checkSwapTransactions(network: Network, unsignedTxns: Transaction[], params: SwapParams, userAddress: string, slippageBps: number | bigint, swapQuote: SwapQuote): void;
|
|
5
|
+
|
|
6
|
+
export { checkSwapTransactions };
|
package/dist/checks.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Transaction } from 'algosdk';
|
|
2
|
+
import { Network, SwapParams, SwapQuote } from './types.js';
|
|
3
|
+
|
|
4
|
+
declare function checkSwapTransactions(network: Network, unsignedTxns: Transaction[], params: SwapParams, userAddress: string, slippageBps: number | bigint, swapQuote: SwapQuote): void;
|
|
5
|
+
|
|
6
|
+
export { checkSwapTransactions };
|
package/dist/checks.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkSADXHAXYjs = require('./chunk-SADXHAXY.js');
|
|
4
|
+
require('./chunk-WSXBJBEU.js');
|
|
5
|
+
require('./chunk-IVNVWRCM.js');
|
|
6
|
+
require('./chunk-MEC4OKES.js');
|
|
7
|
+
require('./chunk-GTEUZNDL.js');
|
|
8
|
+
require('./chunk-WKV4G7E6.js');
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
exports.checkSwapTransactions = _chunkSADXHAXYjs.checkSwapTransactions;
|
|
12
|
+
//# sourceMappingURL=checks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/checks.js"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACF,uEAAC","file":"/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/checks.js"}
|
package/dist/checks.mjs
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
checkSwapTransactions
|
|
3
|
+
} from "./chunk-DHU34JLH.mjs";
|
|
4
|
+
import "./chunk-VGT24JDM.mjs";
|
|
5
|
+
import "./chunk-YMVA5ZDD.mjs";
|
|
6
|
+
import "./chunk-CV77XZT3.mjs";
|
|
7
|
+
import "./chunk-LE66KKNU.mjs";
|
|
8
|
+
import "./chunk-EYGQH356.mjs";
|
|
9
|
+
export {
|
|
10
|
+
checkSwapTransactions
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=checks.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkGTEUZNDLjs = require('./chunk-GTEUZNDL.js');
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunkWKV4G7E6js = require('./chunk-WKV4G7E6.js');
|
|
8
8
|
|
|
9
9
|
// src/swap.ts
|
|
10
10
|
|
|
@@ -15,13 +15,13 @@ var _chunkJ5OA3X2Hjs = require('./chunk-J5OA3X2H.js');
|
|
|
15
15
|
var _algosdk = require('algosdk');
|
|
16
16
|
function prepareEnableAssetToBeSwapped(appId, senderAddr, assetIds, params) {
|
|
17
17
|
const amount = assetIds.length * 1e5;
|
|
18
|
-
const paymentTxn =
|
|
18
|
+
const paymentTxn = _chunkGTEUZNDLjs.transferAlgoOrAsset.call(void 0, 0, senderAddr, _algosdk.getApplicationAddress.call(void 0, appId), amount, params);
|
|
19
19
|
const atc = new (0, _algosdk.AtomicTransactionComposer)();
|
|
20
20
|
atc.addMethodCall({
|
|
21
21
|
sender: senderAddr,
|
|
22
|
-
signer:
|
|
22
|
+
signer: _chunkGTEUZNDLjs.signer,
|
|
23
23
|
appID: appId,
|
|
24
|
-
method: _algosdk.getMethodByName.call(void 0,
|
|
24
|
+
method: _algosdk.getMethodByName.call(void 0, _chunkWKV4G7E6js.routerABIContract.methods, "opt_into_assets"),
|
|
25
25
|
methodArgs: [assetIds],
|
|
26
26
|
appForeignAssets: assetIds,
|
|
27
27
|
suggestedParams: { ...params, fee: (1 + assetIds.length) * 1e3 }
|
|
@@ -36,4 +36,4 @@ function prepareEnableAssetToBeSwapped(appId, senderAddr, assetIds, params) {
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
exports.prepareEnableAssetToBeSwapped = prepareEnableAssetToBeSwapped;
|
|
39
|
-
//# sourceMappingURL=chunk-
|
|
39
|
+
//# sourceMappingURL=chunk-BVY7JBOW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/chunk-BVY7JBOW.js","../src/swap.ts"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACA;ACRA;AACE;AACA;AACA;AACA;AAAA,kCAGK;AAIP,SAAS,6BAAA,CACP,KAAA,EACA,UAAA,EACA,QAAA,EACA,MAAA,EACe;AAEf,EAAA,MAAM,OAAA,EAAS,QAAA,CAAS,OAAA,EAAS,GAAA;AACjC,EAAA,MAAM,WAAA,EAAa,kDAAA,CAAoB,EAAG,UAAA,EAAY,4CAAA,KAA2B,CAAA,EAAG,MAAA,EAAQ,MAAM,CAAA;AAGlG,EAAA,MAAM,IAAA,EAAM,IAAI,uCAAA,CAA0B,CAAA;AAC1C,EAAA,GAAA,CAAI,aAAA,CAAc;AAAA,IAChB,MAAA,EAAQ,UAAA;AAAA,IACR,+BAAA;AAAA,IACA,KAAA,EAAO,KAAA;AAAA,IACP,MAAA,EAAQ,sCAAA,kCAAgB,CAAkB,OAAA,EAAS,iBAAiB,CAAA;AAAA,IACpE,UAAA,EAAY,CAAC,QAAQ,CAAA;AAAA,IACrB,gBAAA,EAAkB,QAAA;AAAA,IAClB,eAAA,EAAiB,EAAE,GAAG,MAAA,EAAQ,GAAA,EAAA,CAAM,EAAA,EAAI,QAAA,CAAS,MAAA,EAAA,EAAU,IAAK;AAAA,EAClE,CAAC,CAAA;AACD,EAAA,MAAM,KAAA,EAAO,GAAA,CAAI,UAAA,CAAW,CAAA,CAAE,GAAA,CAAI,CAAC,EAAE,IAAI,CAAA,EAAA,GAAM;AAC7C,IAAA,GAAA,CAAI,MAAA,EAAQ,KAAA,CAAA;AACZ,IAAA,OAAO,GAAA;AAAA,EACT,CAAC,CAAA;AACD,EAAA,OAAO,oCAAA,CAAe,UAAA,EAAY,IAAA,CAAK,CAAC,CAAE,CAAC,CAAA;AAC7C;ADHA;AACA;AACE;AACF,sEAAC","file":"/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/chunk-BVY7JBOW.js","sourcesContent":[null,"import {\n assignGroupID,\n AtomicTransactionComposer,\n getApplicationAddress,\n getMethodByName,\n SuggestedParams,\n Transaction,\n} from \"algosdk\";\nimport { routerABIContract } from \"./abiContracts\";\nimport { signer, transferAlgoOrAsset } from \"./utils\";\n\nfunction prepareEnableAssetToBeSwapped(\n appId: number,\n senderAddr: string,\n assetIds: number[],\n params: SuggestedParams,\n): Transaction[] {\n // payment txn\n const amount = assetIds.length * 0.1e6;\n const paymentTxn = transferAlgoOrAsset(0, senderAddr, getApplicationAddress(appId), amount, params);\n\n // opt in txn\n const atc = new AtomicTransactionComposer();\n atc.addMethodCall({\n sender: senderAddr,\n signer,\n appID: appId,\n method: getMethodByName(routerABIContract.methods, \"opt_into_assets\"),\n methodArgs: [assetIds],\n appForeignAssets: assetIds,\n suggestedParams: { ...params, fee: (1 + assetIds.length) * 1000 },\n });\n const txns = atc.buildGroup().map(({ txn }) => {\n txn.group = undefined;\n return txn;\n });\n return assignGroupID([paymentTxn, txns[0]!]);\n}\n\nexport { prepareEnableAssetToBeSwapped };\n"]}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import {
|
|
2
|
+
MainnetFolksRouterAppId
|
|
3
|
+
} from "./chunk-VGT24JDM.mjs";
|
|
4
|
+
import {
|
|
5
|
+
TestnetFolksRouterAppId
|
|
6
|
+
} from "./chunk-YMVA5ZDD.mjs";
|
|
7
|
+
import {
|
|
8
|
+
ONE_4_DP,
|
|
9
|
+
mulScale
|
|
10
|
+
} from "./chunk-LE66KKNU.mjs";
|
|
11
|
+
import {
|
|
12
|
+
routerABIContract
|
|
13
|
+
} from "./chunk-EYGQH356.mjs";
|
|
14
|
+
|
|
15
|
+
// src/checks.ts
|
|
16
|
+
import {
|
|
17
|
+
ABIType,
|
|
18
|
+
decodeAddress,
|
|
19
|
+
encodeAddress,
|
|
20
|
+
getApplicationAddress,
|
|
21
|
+
OnApplicationComplete,
|
|
22
|
+
TransactionType
|
|
23
|
+
} from "algosdk";
|
|
24
|
+
function checkSwapTransactions(network, unsignedTxns, params, userAddress, slippageBps, swapQuote) {
|
|
25
|
+
const { fromAssetId, toAssetId, amount, swapMode } = params;
|
|
26
|
+
const folksRouterAppId = network == "mainnet" /* MAINNET */ ? MainnetFolksRouterAppId : TestnetFolksRouterAppId;
|
|
27
|
+
const folksRouterAddr = getApplicationAddress(folksRouterAppId);
|
|
28
|
+
const getHexSelector = (method) => Buffer.from(routerABIContract.getMethodByName(method).getSelector()).toString("hex");
|
|
29
|
+
const uint8ArrayToHex = (uint8Array) => Buffer.from(uint8Array).toString("hex");
|
|
30
|
+
const sendAssetTxn = unsignedTxns[0];
|
|
31
|
+
const swapForwardTxns = unsignedTxns.slice(1, -1);
|
|
32
|
+
const swapEndTxn = unsignedTxns[unsignedTxns.length - 1];
|
|
33
|
+
if (sendAssetTxn.reKeyTo !== void 0) throw Error("Unexpected rekey");
|
|
34
|
+
if (sendAssetTxn.closeRemainderTo !== void 0) throw Error("Unexpected close remainder to");
|
|
35
|
+
if (sendAssetTxn.from.publicKey !== decodeAddress(userAddress).publicKey) throw Error("Incorrect sender");
|
|
36
|
+
if (encodeAddress(sendAssetTxn.to.publicKey) !== folksRouterAddr) throw Error("Incorrect receiver");
|
|
37
|
+
if (!(fromAssetId === 0 && sendAssetTxn.type == TransactionType.pay) && !(fromAssetId === sendAssetTxn.assetIndex && sendAssetTxn.type === TransactionType.axfer))
|
|
38
|
+
throw Error("Sending incorrect algo/asset");
|
|
39
|
+
const sendAmount = BigInt(sendAssetTxn.amount);
|
|
40
|
+
swapForwardTxns.forEach((txn, i) => {
|
|
41
|
+
if (txn.from.publicKey !== decodeAddress(userAddress).publicKey) throw Error("Incorrect sender");
|
|
42
|
+
if (txn.appIndex !== folksRouterAppId) throw Error("Incorrect application index");
|
|
43
|
+
if (txn.type !== TransactionType.appl && txn.appOnComplete !== OnApplicationComplete.NoOpOC)
|
|
44
|
+
throw Error("Incorrect transaction type");
|
|
45
|
+
const swapForwardSelector = uint8ArrayToHex(txn.appArgs.at(0));
|
|
46
|
+
if (swapForwardSelector !== getHexSelector("swap_forward")) throw Error("Incorrect selector");
|
|
47
|
+
});
|
|
48
|
+
if (swapEndTxn.from.publicKey !== decodeAddress(userAddress).publicKey) throw Error("Incorrect sender");
|
|
49
|
+
if (swapEndTxn.appIndex !== folksRouterAppId) throw Error("Incorrect application index");
|
|
50
|
+
if (swapEndTxn.type !== TransactionType.appl && swapEndTxn.appOnComplete !== OnApplicationComplete.NoOpOC)
|
|
51
|
+
throw Error("Incorrect transaction type");
|
|
52
|
+
const swapEndSelector = uint8ArrayToHex(swapEndTxn.appArgs.at(0));
|
|
53
|
+
const isFixedInput = swapEndSelector === getHexSelector("fi_end_swap");
|
|
54
|
+
const isFixedOutput = swapEndSelector === getHexSelector("fo_end_swap");
|
|
55
|
+
if (isFixedInput && swapMode !== "FIXED_INPUT" /* FIXED_INPUT */ || isFixedOutput && swapMode !== "FIXED_OUTPUT" /* FIXED_OUTPUT */)
|
|
56
|
+
throw Error("Incorrect swap mode");
|
|
57
|
+
if (ABIType.from("uint64").decode(swapEndTxn.appArgs.at(1)) !== BigInt(toAssetId))
|
|
58
|
+
throw Error("Receiving incorrect algo/asset");
|
|
59
|
+
const receiveAmount = ABIType.from("uint64").decode(swapEndTxn.appArgs.at(2));
|
|
60
|
+
const slippageAmount = mulScale(swapQuote.quoteAmount, BigInt(slippageBps), ONE_4_DP);
|
|
61
|
+
if (isFixedInput) {
|
|
62
|
+
if (amount !== sendAmount) throw Error("Sending incorrect fixed input amount");
|
|
63
|
+
if (swapQuote.quoteAmount - slippageAmount !== receiveAmount) throw Error("Receiving incorrect fixed input amount");
|
|
64
|
+
}
|
|
65
|
+
if (isFixedOutput) {
|
|
66
|
+
if (swapQuote.quoteAmount + slippageAmount !== sendAmount) throw Error("Sending incorrect fixed output amount");
|
|
67
|
+
if (amount !== receiveAmount) throw Error("Receiving incorrect fixed output amount");
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export {
|
|
72
|
+
checkSwapTransactions
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=chunk-DHU34JLH.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/checks.ts"],"sourcesContent":["import {\n ABIType,\n decodeAddress,\n encodeAddress,\n getApplicationAddress,\n OnApplicationComplete,\n Transaction,\n TransactionType,\n} from \"algosdk\";\nimport { routerABIContract } from \"./abiContracts\";\nimport { MainnetFolksRouterAppId } from \"./constants/mainnetConstants\";\nimport { TestnetFolksRouterAppId } from \"./constants/testnetConstants\";\nimport { Network, SwapMode, SwapParams, SwapQuote } from \"./types\";\nimport { mulScale, ONE_4_DP } from \"./utils\";\n\nexport function checkSwapTransactions(\n network: Network,\n unsignedTxns: Transaction[],\n params: SwapParams,\n userAddress: string,\n slippageBps: number | bigint,\n swapQuote: SwapQuote,\n) {\n const { fromAssetId, toAssetId, amount, swapMode } = params;\n const folksRouterAppId = network == Network.MAINNET ? MainnetFolksRouterAppId : TestnetFolksRouterAppId;\n const folksRouterAddr = getApplicationAddress(folksRouterAppId);\n const getHexSelector = (method: string) =>\n Buffer.from(routerABIContract.getMethodByName(method).getSelector()).toString(\"hex\");\n const uint8ArrayToHex = (uint8Array: Uint8Array) => Buffer.from(uint8Array).toString(\"hex\");\n\n const sendAssetTxn = unsignedTxns[0]!;\n const swapForwardTxns = unsignedTxns.slice(1, -1)!;\n const swapEndTxn = unsignedTxns[unsignedTxns.length - 1]!;\n\n // send algo/asset\n if (sendAssetTxn.reKeyTo !== undefined) throw Error(\"Unexpected rekey\");\n if (sendAssetTxn.closeRemainderTo !== undefined) throw Error(\"Unexpected close remainder to\");\n if (sendAssetTxn.from.publicKey !== decodeAddress(userAddress).publicKey) throw Error(\"Incorrect sender\");\n if (encodeAddress(sendAssetTxn.to.publicKey) !== folksRouterAddr) throw Error(\"Incorrect receiver\");\n if (\n !(fromAssetId === 0 && sendAssetTxn.type == TransactionType.pay) &&\n !(fromAssetId === sendAssetTxn.assetIndex && sendAssetTxn.type === TransactionType.axfer)\n )\n throw Error(\"Sending incorrect algo/asset\");\n const sendAmount = BigInt(sendAssetTxn.amount);\n\n // swap forward txns\n swapForwardTxns.forEach((txn, i) => {\n if (txn.from.publicKey !== decodeAddress(userAddress).publicKey) throw Error(\"Incorrect sender\");\n if (txn.appIndex !== folksRouterAppId) throw Error(\"Incorrect application index\");\n if (txn.type !== TransactionType.appl && txn.appOnComplete !== OnApplicationComplete.NoOpOC)\n throw Error(\"Incorrect transaction type\");\n const swapForwardSelector = uint8ArrayToHex(txn.appArgs!.at(0)!);\n if (swapForwardSelector !== getHexSelector(\"swap_forward\")) throw Error(\"Incorrect selector\");\n });\n\n // receive algo/asset\n if (swapEndTxn.from.publicKey !== decodeAddress(userAddress).publicKey) throw Error(\"Incorrect sender\");\n if (swapEndTxn.appIndex !== folksRouterAppId) throw Error(\"Incorrect application index\");\n if (swapEndTxn.type !== TransactionType.appl && swapEndTxn.appOnComplete !== OnApplicationComplete.NoOpOC)\n throw Error(\"Incorrect transaction type\");\n const swapEndSelector = uint8ArrayToHex(swapEndTxn.appArgs!.at(0)!);\n const isFixedInput = swapEndSelector === getHexSelector(\"fi_end_swap\");\n const isFixedOutput = swapEndSelector === getHexSelector(\"fo_end_swap\");\n if ((isFixedInput && swapMode !== SwapMode.FIXED_INPUT) || (isFixedOutput && swapMode !== SwapMode.FIXED_OUTPUT))\n throw Error(\"Incorrect swap mode\");\n if (ABIType.from(\"uint64\").decode(swapEndTxn.appArgs!.at(1)!) !== BigInt(toAssetId))\n throw Error(\"Receiving incorrect algo/asset\");\n const receiveAmount = ABIType.from(\"uint64\").decode(swapEndTxn.appArgs!.at(2)!) as bigint;\n\n // check amounts\n const slippageAmount = mulScale(swapQuote.quoteAmount, BigInt(slippageBps), ONE_4_DP);\n if (isFixedInput) {\n if (amount !== sendAmount) throw Error(\"Sending incorrect fixed input amount\");\n if (swapQuote.quoteAmount - slippageAmount !== receiveAmount) throw Error(\"Receiving incorrect fixed input amount\");\n }\n if (isFixedOutput) {\n if (swapQuote.quoteAmount + slippageAmount !== sendAmount) throw Error(\"Sending incorrect fixed output amount\");\n if (amount !== receiveAmount) throw Error(\"Receiving incorrect fixed output amount\");\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,OACK;AAOA,SAAS,sBACd,SACA,cACA,QACA,aACA,aACA,WACA;AACA,QAAM,EAAE,aAAa,WAAW,QAAQ,SAAS,IAAI;AACrD,QAAM,mBAAmB,qCAA6B,0BAA0B;AAChF,QAAM,kBAAkB,sBAAsB,gBAAgB;AAC9D,QAAM,iBAAiB,CAAC,WACtB,OAAO,KAAK,kBAAkB,gBAAgB,MAAM,EAAE,YAAY,CAAC,EAAE,SAAS,KAAK;AACrF,QAAM,kBAAkB,CAAC,eAA2B,OAAO,KAAK,UAAU,EAAE,SAAS,KAAK;AAE1F,QAAM,eAAe,aAAa,CAAC;AACnC,QAAM,kBAAkB,aAAa,MAAM,GAAG,EAAE;AAChD,QAAM,aAAa,aAAa,aAAa,SAAS,CAAC;AAGvD,MAAI,aAAa,YAAY,OAAW,OAAM,MAAM,kBAAkB;AACtE,MAAI,aAAa,qBAAqB,OAAW,OAAM,MAAM,+BAA+B;AAC5F,MAAI,aAAa,KAAK,cAAc,cAAc,WAAW,EAAE,UAAW,OAAM,MAAM,kBAAkB;AACxG,MAAI,cAAc,aAAa,GAAG,SAAS,MAAM,gBAAiB,OAAM,MAAM,oBAAoB;AAClG,MACE,EAAE,gBAAgB,KAAK,aAAa,QAAQ,gBAAgB,QAC5D,EAAE,gBAAgB,aAAa,cAAc,aAAa,SAAS,gBAAgB;AAEnF,UAAM,MAAM,8BAA8B;AAC5C,QAAM,aAAa,OAAO,aAAa,MAAM;AAG7C,kBAAgB,QAAQ,CAAC,KAAK,MAAM;AAClC,QAAI,IAAI,KAAK,cAAc,cAAc,WAAW,EAAE,UAAW,OAAM,MAAM,kBAAkB;AAC/F,QAAI,IAAI,aAAa,iBAAkB,OAAM,MAAM,6BAA6B;AAChF,QAAI,IAAI,SAAS,gBAAgB,QAAQ,IAAI,kBAAkB,sBAAsB;AACnF,YAAM,MAAM,4BAA4B;AAC1C,UAAM,sBAAsB,gBAAgB,IAAI,QAAS,GAAG,CAAC,CAAE;AAC/D,QAAI,wBAAwB,eAAe,cAAc,EAAG,OAAM,MAAM,oBAAoB;AAAA,EAC9F,CAAC;AAGD,MAAI,WAAW,KAAK,cAAc,cAAc,WAAW,EAAE,UAAW,OAAM,MAAM,kBAAkB;AACtG,MAAI,WAAW,aAAa,iBAAkB,OAAM,MAAM,6BAA6B;AACvF,MAAI,WAAW,SAAS,gBAAgB,QAAQ,WAAW,kBAAkB,sBAAsB;AACjG,UAAM,MAAM,4BAA4B;AAC1C,QAAM,kBAAkB,gBAAgB,WAAW,QAAS,GAAG,CAAC,CAAE;AAClE,QAAM,eAAe,oBAAoB,eAAe,aAAa;AACrE,QAAM,gBAAgB,oBAAoB,eAAe,aAAa;AACtE,MAAK,gBAAgB,gDAAuC,iBAAiB;AAC3E,UAAM,MAAM,qBAAqB;AACnC,MAAI,QAAQ,KAAK,QAAQ,EAAE,OAAO,WAAW,QAAS,GAAG,CAAC,CAAE,MAAM,OAAO,SAAS;AAChF,UAAM,MAAM,gCAAgC;AAC9C,QAAM,gBAAgB,QAAQ,KAAK,QAAQ,EAAE,OAAO,WAAW,QAAS,GAAG,CAAC,CAAE;AAG9E,QAAM,iBAAiB,SAAS,UAAU,aAAa,OAAO,WAAW,GAAG,QAAQ;AACpF,MAAI,cAAc;AAChB,QAAI,WAAW,WAAY,OAAM,MAAM,sCAAsC;AAC7E,QAAI,UAAU,cAAc,mBAAmB,cAAe,OAAM,MAAM,wCAAwC;AAAA,EACpH;AACA,MAAI,eAAe;AACjB,QAAI,UAAU,cAAc,mBAAmB,WAAY,OAAM,MAAM,uCAAuC;AAC9G,QAAI,WAAW,cAAe,OAAM,MAAM,yCAAyC;AAAA,EACrF;AACF;","names":[]}
|
|
@@ -5,6 +5,18 @@ import { ABIContract } from "algosdk";
|
|
|
5
5
|
var router_default = {
|
|
6
6
|
name: "router",
|
|
7
7
|
methods: [
|
|
8
|
+
{
|
|
9
|
+
name: "get_user_discount",
|
|
10
|
+
args: [
|
|
11
|
+
{
|
|
12
|
+
type: "address",
|
|
13
|
+
name: "user"
|
|
14
|
+
}
|
|
15
|
+
],
|
|
16
|
+
returns: {
|
|
17
|
+
type: "uint64"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
8
20
|
{
|
|
9
21
|
name: "opt_into_assets",
|
|
10
22
|
args: [
|
|
@@ -107,4 +119,4 @@ var routerABIContract = new ABIContract(router_default);
|
|
|
107
119
|
export {
|
|
108
120
|
routerABIContract
|
|
109
121
|
};
|
|
110
|
-
//# sourceMappingURL=chunk-
|
|
122
|
+
//# sourceMappingURL=chunk-EYGQH356.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/abiContracts/index.ts","../src/abiContracts/router.json"],"sourcesContent":["import { ABIContract } from \"algosdk\";\nimport routerABI from \"./router.json\";\n\nexport const routerABIContract = new ABIContract(routerABI);\n","{\n \"name\": \"router\",\n \"methods\": [\n {\n \"name\": \"get_user_discount\",\n \"args\": [\n {\n \"type\": \"address\",\n \"name\": \"user\"\n }\n ],\n \"returns\": {\n \"type\": \"uint64\"\n }\n },\n {\n \"name\": \"opt_into_assets\",\n \"args\": [\n {\n \"type\": \"uint64[]\",\n \"name\": \"opt_in_assets\"\n }\n ],\n \"returns\": {\n \"type\": \"void\"\n }\n },\n {\n \"name\": \"swap_forward\",\n \"args\": [\n {\n \"type\": \"uint64\",\n \"name\": \"end_swap_txn_offset_index\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"input_asset_id\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"percent_input_asset\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"increase_budget\"\n },\n {\n \"type\": \"(uint64,bool,uint64,uint64,uint64,address,uint64,uint64,address,address,uint64,uint64)[]\",\n \"name\": \"forward_path\"\n }\n ],\n \"returns\": {\n \"type\": \"void\"\n }\n },\n {\n \"name\": \"fi_end_swap\",\n \"args\": [\n {\n \"type\": \"uint64\",\n \"name\": \"output_asset_id\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"min_received\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"fee\"\n },\n {\n \"type\": \"address\",\n \"name\": \"referrer\"\n }\n ],\n \"returns\": {\n \"type\": \"void\"\n }\n },\n {\n \"name\": \"fo_end_swap\",\n \"args\": [\n {\n \"type\": \"uint64\",\n \"name\": \"output_asset_id\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"exact_received\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"fee\"\n },\n {\n \"type\": \"address\",\n \"name\": \"referrer\"\n },\n {\n \"type\": \"(uint64,bool,uint64,uint64,uint64,address,uint64,uint64,address,address,uint64,uint64)[]\",\n \"name\": \"excess_path\"\n }\n ],\n \"returns\": {\n \"type\": \"void\"\n }\n }\n ],\n \"networks\": {}\n}\n"],"mappings":";AAAA,SAAS,mBAAmB;;;ACA5B;AAAA,EACE,MAAQ;AAAA,EACR,SAAW;AAAA,IACT;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAY,CAAC;AACf;;;AD1GO,IAAM,oBAAoB,IAAI,YAAY,cAAS;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
transferAlgoOrAsset
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LE66KKNU.mjs";
|
|
4
4
|
|
|
5
5
|
// src/referrer.ts
|
|
6
6
|
import {
|
|
@@ -204,4 +204,4 @@ export {
|
|
|
204
204
|
prepareReferrerOptIntoAsset,
|
|
205
205
|
prepareClaimReferrerFees
|
|
206
206
|
};
|
|
207
|
-
//# sourceMappingURL=chunk-
|
|
207
|
+
//# sourceMappingURL=chunk-GQO2R6ON.mjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkGTEUZNDLjs = require('./chunk-GTEUZNDL.js');
|
|
4
4
|
|
|
5
5
|
// src/referrer.ts
|
|
6
6
|
|
|
@@ -188,14 +188,14 @@ var buildReferrerGroupTransaction = (txns, lsig) => _algosdk.assignGroupID.call(
|
|
|
188
188
|
function prepareReferrerOptIntoAsset(senderAddr, referrerAddr, assetId, params) {
|
|
189
189
|
const lsig = getReferrerLogicSig(referrerAddr);
|
|
190
190
|
const MIN_BALANCE = BigInt(1e5);
|
|
191
|
-
const minBalancePayment =
|
|
192
|
-
const assetOptIn =
|
|
191
|
+
const minBalancePayment = _chunkGTEUZNDLjs.transferAlgoOrAsset.call(void 0, 0, senderAddr, lsig.address(), MIN_BALANCE, { ...params, fee: 2e3 });
|
|
192
|
+
const assetOptIn = _chunkGTEUZNDLjs.transferAlgoOrAsset.call(void 0, assetId, lsig.address(), lsig.address(), 0, { ...params, fee: 0 });
|
|
193
193
|
return buildReferrerGroupTransaction([minBalancePayment, assetOptIn], lsig);
|
|
194
194
|
}
|
|
195
195
|
function prepareClaimReferrerFees(senderAddr, referrerAddr, assetId, amount, params) {
|
|
196
196
|
const lsig = getReferrerLogicSig(referrerAddr);
|
|
197
|
-
const groupFeePayment =
|
|
198
|
-
const claim =
|
|
197
|
+
const groupFeePayment = _chunkGTEUZNDLjs.transferAlgoOrAsset.call(void 0, 0, senderAddr, senderAddr, 0, { ...params, fee: 2e3 });
|
|
198
|
+
const claim = _chunkGTEUZNDLjs.transferAlgoOrAsset.call(void 0, assetId, lsig.address(), referrerAddr, amount, { ...params, fee: 0 });
|
|
199
199
|
return buildReferrerGroupTransaction([groupFeePayment, claim], lsig);
|
|
200
200
|
}
|
|
201
201
|
|
|
@@ -204,4 +204,4 @@ function prepareClaimReferrerFees(senderAddr, referrerAddr, assetId, amount, par
|
|
|
204
204
|
|
|
205
205
|
|
|
206
206
|
exports.getReferrerLogicSig = getReferrerLogicSig; exports.prepareReferrerOptIntoAsset = prepareReferrerOptIntoAsset; exports.prepareClaimReferrerFees = prepareClaimReferrerFees;
|
|
207
|
-
//# sourceMappingURL=chunk-
|
|
207
|
+
//# sourceMappingURL=chunk-GRBEXEIP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/chunk-GRBEXEIP.js","../src/referrer.ts"],"names":[],"mappings":"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","file":"/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/chunk-GRBEXEIP.js","sourcesContent":[null,"import {\n assignGroupID,\n decodeAddress,\n encodeAddress,\n encodeUnsignedTransaction,\n LogicSigAccount,\n SuggestedParams,\n Transaction,\n} from \"algosdk\";\nimport { ReferrerGroupTransaction } from \"./types\";\nimport { transferAlgoOrAsset } from \"./utils\";\n\nfunction getReferrerLogicSig(referrerAddr: string): LogicSigAccount {\n const prefix = Uint8Array.from([\n 9, 32, 3, 1, 4, 0, 128, 12, 70, 79, 76, 75, 83, 95, 82, 79, 85, 84, 69, 82, 72, 49, 1, 36, 18, 68, 49, 32, 50, 3,\n 18, 68, 49, 9, 50, 3, 18, 68, 49, 21, 50, 3, 18, 68, 49, 16, 34, 18, 49, 16, 35, 18, 17, 68, 49, 16, 35, 18, 49, 20,\n 49, 0, 18, 16, 64, 0, 53, 49, 16, 35, 18, 64, 0, 41, 49, 7, 128, 32,\n ]);\n const suffix = Uint8Array.from([\n 18, 68, 66, 0, 79, 49, 20, 66, 255, 212, 49, 22, 34, 9, 56, 16, 34, 18, 68, 49, 22, 34, 9, 56, 0, 49, 0, 19, 68, 49,\n 22, 34, 9, 56, 7, 49, 0, 18, 68, 49, 22, 34, 9, 56, 8, 50, 1, 18, 68, 49, 22, 34, 9, 56, 32, 50, 3, 18, 68, 49, 22,\n 34, 9, 56, 9, 50, 3, 18, 68, 49, 22, 34, 9, 56, 21, 50, 3, 18, 68, 49, 18, 36, 18, 68, 34, 67,\n ]);\n return new LogicSigAccount(new Uint8Array([...prefix, ...decodeAddress(referrerAddr).publicKey, ...suffix]));\n}\n\nconst buildReferrerGroupTransaction = (txns: Transaction[], lsig: LogicSigAccount): ReferrerGroupTransaction =>\n assignGroupID(txns).map((txn) => ({\n unsignedTxn: encodeUnsignedTransaction(txn),\n lsig: encodeAddress(txn.from.publicKey) === lsig.address() ? lsig.toByte() : undefined,\n }));\n\nfunction prepareReferrerOptIntoAsset(\n senderAddr: string,\n referrerAddr: string,\n assetId: number,\n params: SuggestedParams,\n): ReferrerGroupTransaction {\n const lsig = getReferrerLogicSig(referrerAddr);\n\n // generate transactions\n const MIN_BALANCE = BigInt(0.1e6);\n const minBalancePayment = transferAlgoOrAsset(0, senderAddr, lsig.address(), MIN_BALANCE, { ...params, fee: 2000 });\n const assetOptIn = transferAlgoOrAsset(assetId, lsig.address(), lsig.address(), 0, { ...params, fee: 0 });\n\n // group, encode and attach lsig\n return buildReferrerGroupTransaction([minBalancePayment, assetOptIn], lsig);\n}\n\nfunction prepareClaimReferrerFees(\n senderAddr: string,\n referrerAddr: string,\n assetId: number,\n amount: number | bigint,\n params: SuggestedParams,\n): ReferrerGroupTransaction {\n const lsig = getReferrerLogicSig(referrerAddr);\n\n // generate transactions\n const groupFeePayment = transferAlgoOrAsset(0, senderAddr, senderAddr, 0, { ...params, fee: 2000 });\n const claim = transferAlgoOrAsset(assetId, lsig.address(), referrerAddr, amount, { ...params, fee: 0 });\n\n // group, encode and attach lsig\n return buildReferrerGroupTransaction([groupFeePayment, claim], lsig);\n}\n\nexport { getReferrerLogicSig, prepareReferrerOptIntoAsset, prepareClaimReferrerFees };\n"]}
|
|
@@ -5,7 +5,13 @@
|
|
|
5
5
|
var _algosdk = require('algosdk');
|
|
6
6
|
var signer = async () => [];
|
|
7
7
|
function transferAlgoOrAsset(assetId, from, to, amount, params) {
|
|
8
|
-
return assetId !== 0 ? _algosdk.
|
|
8
|
+
return assetId !== 0 ? _algosdk.makeAssetTransferTxnWithSuggestedParamsFromObject.call(void 0, {
|
|
9
|
+
from,
|
|
10
|
+
to,
|
|
11
|
+
amount,
|
|
12
|
+
suggestedParams: params,
|
|
13
|
+
assetIndex: assetId
|
|
14
|
+
}) : _algosdk.makePaymentTxnWithSuggestedParamsFromObject.call(void 0, { from, to, amount, suggestedParams: params });
|
|
9
15
|
}
|
|
10
16
|
var ONE_4_DP = BigInt(1e4);
|
|
11
17
|
function mulScale(n1, n2, scale) {
|
|
@@ -18,4 +24,4 @@ function mulScale(n1, n2, scale) {
|
|
|
18
24
|
|
|
19
25
|
|
|
20
26
|
exports.signer = signer; exports.transferAlgoOrAsset = transferAlgoOrAsset; exports.ONE_4_DP = ONE_4_DP; exports.mulScale = mulScale;
|
|
21
|
-
//# sourceMappingURL=chunk-
|
|
27
|
+
//# sourceMappingURL=chunk-GTEUZNDL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/chunk-GTEUZNDL.js","../src/utils.ts"],"names":[],"mappings":"AAAA;ACAA;AACE;AACA;AAAA,kCAGK;AAEP,IAAM,OAAA,EAAS,MAAA,CAAA,EAAA,GAAY,CAAC,CAAA;AAK5B,SAAS,mBAAA,CACP,OAAA,EACA,IAAA,EACA,EAAA,EACA,MAAA,EACA,MAAA,EACa;AACb,EAAA,OAAO,QAAA,IAAY,EAAA,EACf,wEAAA;AAAkD,IAChD,IAAA;AAAA,IACA,EAAA;AAAA,IACA,MAAA;AAAA,IACA,eAAA,EAAiB,MAAA;AAAA,IACjB,UAAA,EAAY;AAAA,EACd,CAAC,EAAA,EACD,kEAAA,EAA8C,IAAA,EAAM,EAAA,EAAI,MAAA,EAAQ,eAAA,EAAiB,OAAO,CAAC,CAAA;AAC/F;AAEA,IAAM,SAAA,EAAW,MAAA,CAAO,GAAG,CAAA;AAE3B,SAAS,QAAA,CAAS,EAAA,EAAY,EAAA,EAAY,KAAA,EAAuB;AAC/D,EAAA,OAAQ,GAAA,EAAK,GAAA,EAAM,KAAA;AACrB;ADfA;AACA;AACE;AACA;AACA;AACA;AACF,qIAAC","file":"/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/chunk-GTEUZNDL.js","sourcesContent":[null,"import {\n makeAssetTransferTxnWithSuggestedParamsFromObject,\n makePaymentTxnWithSuggestedParamsFromObject,\n SuggestedParams,\n Transaction,\n} from \"algosdk\";\n\nconst signer = async () => [];\n\n/**\n * Transfer algo or asset. 0 assetId indicates algo transfer, else asset transfer.\n */\nfunction transferAlgoOrAsset(\n assetId: number,\n from: string,\n to: string,\n amount: number | bigint,\n params: SuggestedParams,\n): Transaction {\n return assetId !== 0\n ? makeAssetTransferTxnWithSuggestedParamsFromObject({\n from,\n to,\n amount,\n suggestedParams: params,\n assetIndex: assetId,\n })\n : makePaymentTxnWithSuggestedParamsFromObject({ from, to, amount, suggestedParams: params });\n}\n\nconst ONE_4_DP = BigInt(1e4);\n\nfunction mulScale(n1: bigint, n2: bigint, scale: bigint): bigint {\n return (n1 * n2) / scale;\n}\n\nexport { signer, transferAlgoOrAsset, ONE_4_DP, mulScale };\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
signer,
|
|
3
3
|
transferAlgoOrAsset
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-LE66KKNU.mjs";
|
|
5
5
|
import {
|
|
6
6
|
routerABIContract
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-EYGQH356.mjs";
|
|
8
8
|
|
|
9
9
|
// src/swap.ts
|
|
10
10
|
import {
|
|
@@ -36,4 +36,4 @@ function prepareEnableAssetToBeSwapped(appId, senderAddr, assetIds, params) {
|
|
|
36
36
|
export {
|
|
37
37
|
prepareEnableAssetToBeSwapped
|
|
38
38
|
};
|
|
39
|
-
//# sourceMappingURL=chunk-
|
|
39
|
+
//# sourceMappingURL=chunk-GWQ2U3UO.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/constants/testnetConstants.ts
|
|
2
|
-
var TestnetFolksRouterAppId =
|
|
2
|
+
var TestnetFolksRouterAppId = 748314673;
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
exports.TestnetFolksRouterAppId = TestnetFolksRouterAppId;
|
|
7
|
-
//# sourceMappingURL=chunk-
|
|
7
|
+
//# sourceMappingURL=chunk-IVNVWRCM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/chunk-IVNVWRCM.js","../src/constants/testnetConstants.ts"],"names":[],"mappings":"AAAA;ACAA,IAAM,wBAAA,EAA0B,SAAA;ADEhC;AACA;AACE;AACF,0DAAC","file":"/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/chunk-IVNVWRCM.js","sourcesContent":[null,"const TestnetFolksRouterAppId = 748314673;\n\nexport { TestnetFolksRouterAppId };\n"]}
|
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
// src/utils.ts
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
makeAssetTransferTxnWithSuggestedParamsFromObject,
|
|
4
|
+
makePaymentTxnWithSuggestedParamsFromObject
|
|
5
5
|
} from "algosdk";
|
|
6
6
|
var signer = async () => [];
|
|
7
7
|
function transferAlgoOrAsset(assetId, from, to, amount, params) {
|
|
8
|
-
return assetId !== 0 ?
|
|
8
|
+
return assetId !== 0 ? makeAssetTransferTxnWithSuggestedParamsFromObject({
|
|
9
|
+
from,
|
|
10
|
+
to,
|
|
11
|
+
amount,
|
|
12
|
+
suggestedParams: params,
|
|
13
|
+
assetIndex: assetId
|
|
14
|
+
}) : makePaymentTxnWithSuggestedParamsFromObject({ from, to, amount, suggestedParams: params });
|
|
9
15
|
}
|
|
10
16
|
var ONE_4_DP = BigInt(1e4);
|
|
11
17
|
function mulScale(n1, n2, scale) {
|
|
@@ -18,4 +24,4 @@ export {
|
|
|
18
24
|
ONE_4_DP,
|
|
19
25
|
mulScale
|
|
20
26
|
};
|
|
21
|
-
//# sourceMappingURL=chunk-
|
|
27
|
+
//# sourceMappingURL=chunk-LE66KKNU.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils.ts"],"sourcesContent":["import {\n makeAssetTransferTxnWithSuggestedParamsFromObject,\n makePaymentTxnWithSuggestedParamsFromObject,\n SuggestedParams,\n Transaction,\n} from \"algosdk\";\n\nconst signer = async () => [];\n\n/**\n * Transfer algo or asset. 0 assetId indicates algo transfer, else asset transfer.\n */\nfunction transferAlgoOrAsset(\n assetId: number,\n from: string,\n to: string,\n amount: number | bigint,\n params: SuggestedParams,\n): Transaction {\n return assetId !== 0\n ? makeAssetTransferTxnWithSuggestedParamsFromObject({\n from,\n to,\n amount,\n suggestedParams: params,\n assetIndex: assetId,\n })\n : makePaymentTxnWithSuggestedParamsFromObject({ from, to, amount, suggestedParams: params });\n}\n\nconst ONE_4_DP = BigInt(1e4);\n\nfunction mulScale(n1: bigint, n2: bigint, scale: bigint): bigint {\n return (n1 * n2) / scale;\n}\n\nexport { signer, transferAlgoOrAsset, ONE_4_DP, mulScale };\n"],"mappings":";AAAA;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AAEP,IAAM,SAAS,YAAY,CAAC;AAK5B,SAAS,oBACP,SACA,MACA,IACA,QACA,QACa;AACb,SAAO,YAAY,IACf,kDAAkD;AAAA,IAChD;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IACjB,YAAY;AAAA,EACd,CAAC,IACD,4CAA4C,EAAE,MAAM,IAAI,QAAQ,iBAAiB,OAAO,CAAC;AAC/F;AAEA,IAAM,WAAW,OAAO,GAAG;AAE3B,SAAS,SAAS,IAAY,IAAY,OAAuB;AAC/D,SAAQ,KAAK,KAAM;AACrB;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types.ts"],"names":["Network","SwapMode"],"mappings":";
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/chunk-MEC4OKES.js","../src/types.ts"],"names":["Network","SwapMode"],"mappings":"AAAA;ACKA,IAAK,QAAA,kBAAL,CAAA,CAAKA,QAAAA,EAAAA,GAAL;AACE,EAAAA,QAAAA,CAAA,SAAA,EAAA,EAAU,SAAA;AACV,EAAAA,QAAAA,CAAA,SAAA,EAAA,EAAU,SAAA;AAFP,EAAA,OAAAA,QAAAA;AAAA,CAAA,CAAA,CAAA,QAAA,GAAA,CAAA,CAAA,CAAA;AAKL,IAAK,SAAA,kBAAL,CAAA,CAAKC,SAAAA,EAAAA,GAAL;AACE,EAAAA,SAAAA,CAAA,aAAA,EAAA,EAAc,aAAA;AACd,EAAAA,SAAAA,CAAA,cAAA,EAAA,EAAe,cAAA;AAFZ,EAAA,OAAAA,SAAAA;AAAA,CAAA,CAAA,CAAA,SAAA,GAAA,CAAA,CAAA,CAAA;ADCL;AACA;AACE;AACA;AACF,uDAAC","file":"/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/chunk-MEC4OKES.js","sourcesContent":[null,"type ReferrerGroupTransaction = {\n unsignedTxn: Uint8Array;\n lsig?: Uint8Array;\n}[];\n\nenum Network {\n MAINNET = \"mainnet\",\n TESTNET = \"testnet\",\n}\n\nenum SwapMode {\n FIXED_INPUT = \"FIXED_INPUT\",\n FIXED_OUTPUT = \"FIXED_OUTPUT\",\n}\n\ninterface SwapParams {\n fromAssetId: number;\n toAssetId: number;\n amount: number | bigint;\n swapMode: SwapMode;\n}\n\ninterface SwapQuote {\n quoteAmount: bigint;\n priceImpact: number;\n microalgoTxnsFee: number;\n txnPayload: string;\n}\n\ntype SwapTransactions = string[];\n\nexport { ReferrerGroupTransaction, Network, SwapMode, SwapParams, SwapQuote, SwapTransactions };\n"]}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkWSXBJBEUjs = require('./chunk-WSXBJBEU.js');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkIVNVWRCMjs = require('./chunk-IVNVWRCM.js');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
var _chunkGTEUZNDLjs = require('./chunk-GTEUZNDL.js');
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
var _chunkWKV4G7E6js = require('./chunk-WKV4G7E6.js');
|
|
14
|
+
|
|
15
|
+
// src/checks.ts
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
var _algosdk = require('algosdk');
|
|
24
|
+
function checkSwapTransactions(network, unsignedTxns, params, userAddress, slippageBps, swapQuote) {
|
|
25
|
+
const { fromAssetId, toAssetId, amount, swapMode } = params;
|
|
26
|
+
const folksRouterAppId = network == "mainnet" /* MAINNET */ ? _chunkWSXBJBEUjs.MainnetFolksRouterAppId : _chunkIVNVWRCMjs.TestnetFolksRouterAppId;
|
|
27
|
+
const folksRouterAddr = _algosdk.getApplicationAddress.call(void 0, folksRouterAppId);
|
|
28
|
+
const getHexSelector = (method) => Buffer.from(_chunkWKV4G7E6js.routerABIContract.getMethodByName(method).getSelector()).toString("hex");
|
|
29
|
+
const uint8ArrayToHex = (uint8Array) => Buffer.from(uint8Array).toString("hex");
|
|
30
|
+
const sendAssetTxn = unsignedTxns[0];
|
|
31
|
+
const swapForwardTxns = unsignedTxns.slice(1, -1);
|
|
32
|
+
const swapEndTxn = unsignedTxns[unsignedTxns.length - 1];
|
|
33
|
+
if (sendAssetTxn.reKeyTo !== void 0) throw Error("Unexpected rekey");
|
|
34
|
+
if (sendAssetTxn.closeRemainderTo !== void 0) throw Error("Unexpected close remainder to");
|
|
35
|
+
if (sendAssetTxn.from.publicKey !== _algosdk.decodeAddress.call(void 0, userAddress).publicKey) throw Error("Incorrect sender");
|
|
36
|
+
if (_algosdk.encodeAddress.call(void 0, sendAssetTxn.to.publicKey) !== folksRouterAddr) throw Error("Incorrect receiver");
|
|
37
|
+
if (!(fromAssetId === 0 && sendAssetTxn.type == _algosdk.TransactionType.pay) && !(fromAssetId === sendAssetTxn.assetIndex && sendAssetTxn.type === _algosdk.TransactionType.axfer))
|
|
38
|
+
throw Error("Sending incorrect algo/asset");
|
|
39
|
+
const sendAmount = BigInt(sendAssetTxn.amount);
|
|
40
|
+
swapForwardTxns.forEach((txn, i) => {
|
|
41
|
+
if (txn.from.publicKey !== _algosdk.decodeAddress.call(void 0, userAddress).publicKey) throw Error("Incorrect sender");
|
|
42
|
+
if (txn.appIndex !== folksRouterAppId) throw Error("Incorrect application index");
|
|
43
|
+
if (txn.type !== _algosdk.TransactionType.appl && txn.appOnComplete !== _algosdk.OnApplicationComplete.NoOpOC)
|
|
44
|
+
throw Error("Incorrect transaction type");
|
|
45
|
+
const swapForwardSelector = uint8ArrayToHex(txn.appArgs.at(0));
|
|
46
|
+
if (swapForwardSelector !== getHexSelector("swap_forward")) throw Error("Incorrect selector");
|
|
47
|
+
});
|
|
48
|
+
if (swapEndTxn.from.publicKey !== _algosdk.decodeAddress.call(void 0, userAddress).publicKey) throw Error("Incorrect sender");
|
|
49
|
+
if (swapEndTxn.appIndex !== folksRouterAppId) throw Error("Incorrect application index");
|
|
50
|
+
if (swapEndTxn.type !== _algosdk.TransactionType.appl && swapEndTxn.appOnComplete !== _algosdk.OnApplicationComplete.NoOpOC)
|
|
51
|
+
throw Error("Incorrect transaction type");
|
|
52
|
+
const swapEndSelector = uint8ArrayToHex(swapEndTxn.appArgs.at(0));
|
|
53
|
+
const isFixedInput = swapEndSelector === getHexSelector("fi_end_swap");
|
|
54
|
+
const isFixedOutput = swapEndSelector === getHexSelector("fo_end_swap");
|
|
55
|
+
if (isFixedInput && swapMode !== "FIXED_INPUT" /* FIXED_INPUT */ || isFixedOutput && swapMode !== "FIXED_OUTPUT" /* FIXED_OUTPUT */)
|
|
56
|
+
throw Error("Incorrect swap mode");
|
|
57
|
+
if (_algosdk.ABIType.from("uint64").decode(swapEndTxn.appArgs.at(1)) !== BigInt(toAssetId))
|
|
58
|
+
throw Error("Receiving incorrect algo/asset");
|
|
59
|
+
const receiveAmount = _algosdk.ABIType.from("uint64").decode(swapEndTxn.appArgs.at(2));
|
|
60
|
+
const slippageAmount = _chunkGTEUZNDLjs.mulScale.call(void 0, swapQuote.quoteAmount, BigInt(slippageBps), _chunkGTEUZNDLjs.ONE_4_DP);
|
|
61
|
+
if (isFixedInput) {
|
|
62
|
+
if (amount !== sendAmount) throw Error("Sending incorrect fixed input amount");
|
|
63
|
+
if (swapQuote.quoteAmount - slippageAmount !== receiveAmount) throw Error("Receiving incorrect fixed input amount");
|
|
64
|
+
}
|
|
65
|
+
if (isFixedOutput) {
|
|
66
|
+
if (swapQuote.quoteAmount + slippageAmount !== sendAmount) throw Error("Sending incorrect fixed output amount");
|
|
67
|
+
if (amount !== receiveAmount) throw Error("Receiving incorrect fixed output amount");
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
exports.checkSwapTransactions = checkSwapTransactions;
|
|
74
|
+
//# sourceMappingURL=chunk-SADXHAXY.js.map
|