@folks-router/js-sdk 0.3.0 → 0.4.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.
Files changed (46) hide show
  1. package/dist/FolksRouterClient.js +4 -4
  2. package/dist/FolksRouterClient.mjs +3 -3
  3. package/dist/checks.js +3 -3
  4. package/dist/checks.mjs +2 -2
  5. package/dist/chunk-35AIBYIP.js +77 -0
  6. package/dist/chunk-35AIBYIP.js.map +1 -0
  7. package/dist/{chunk-DHU34JLH.mjs → chunk-B3QVYTBC.mjs} +22 -19
  8. package/dist/chunk-B3QVYTBC.mjs.map +1 -0
  9. package/dist/{chunk-LE66KKNU.mjs → chunk-JUBOHIQC.mjs} +5 -5
  10. package/dist/chunk-JUBOHIQC.mjs.map +1 -0
  11. package/dist/{chunk-GRBEXEIP.js → chunk-KLU7UE4D.js} +13 -7
  12. package/dist/chunk-KLU7UE4D.js.map +1 -0
  13. package/dist/{chunk-GWQ2U3UO.mjs → chunk-NT3M7HTQ.mjs} +3 -3
  14. package/dist/chunk-NT3M7HTQ.mjs.map +1 -0
  15. package/dist/{chunk-GQO2R6ON.mjs → chunk-ODZGUTBU.mjs} +12 -6
  16. package/dist/chunk-ODZGUTBU.mjs.map +1 -0
  17. package/dist/{chunk-GTEUZNDL.js → chunk-OM7CUUOV.js} +5 -5
  18. package/dist/chunk-OM7CUUOV.js.map +1 -0
  19. package/dist/{chunk-V4ANJGMA.js → chunk-VPHDL2GP.js} +3 -5
  20. package/dist/chunk-VPHDL2GP.js.map +1 -0
  21. package/dist/{chunk-WPZIOEUM.mjs → chunk-YPK7GFUE.mjs} +3 -5
  22. package/dist/chunk-YPK7GFUE.mjs.map +1 -0
  23. package/dist/{chunk-BVY7JBOW.js → chunk-ZVM64SDR.js} +4 -4
  24. package/dist/chunk-ZVM64SDR.js.map +1 -0
  25. package/dist/index.js +6 -6
  26. package/dist/index.mjs +5 -5
  27. package/dist/referrer.js +3 -3
  28. package/dist/referrer.mjs +2 -2
  29. package/dist/swap.js +3 -3
  30. package/dist/swap.mjs +2 -2
  31. package/dist/utils.d.mts +1 -1
  32. package/dist/utils.d.ts +1 -1
  33. package/dist/utils.js +2 -2
  34. package/dist/utils.mjs +1 -1
  35. package/package.json +2 -2
  36. package/dist/chunk-BVY7JBOW.js.map +0 -1
  37. package/dist/chunk-DHU34JLH.mjs.map +0 -1
  38. package/dist/chunk-GQO2R6ON.mjs.map +0 -1
  39. package/dist/chunk-GRBEXEIP.js.map +0 -1
  40. package/dist/chunk-GTEUZNDL.js.map +0 -1
  41. package/dist/chunk-GWQ2U3UO.mjs.map +0 -1
  42. package/dist/chunk-LE66KKNU.mjs.map +0 -1
  43. package/dist/chunk-SADXHAXY.js +0 -74
  44. package/dist/chunk-SADXHAXY.js.map +0 -1
  45. package/dist/chunk-V4ANJGMA.js.map +0 -1
  46. package/dist/chunk-WPZIOEUM.mjs.map +0 -1
@@ -1,13 +1,13 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkV4ANJGMAjs = require('./chunk-V4ANJGMA.js');
4
- require('./chunk-SADXHAXY.js');
3
+ var _chunkVPHDL2GPjs = require('./chunk-VPHDL2GP.js');
4
+ require('./chunk-35AIBYIP.js');
5
5
  require('./chunk-WSXBJBEU.js');
6
6
  require('./chunk-IVNVWRCM.js');
7
7
  require('./chunk-MEC4OKES.js');
8
- require('./chunk-GTEUZNDL.js');
8
+ require('./chunk-OM7CUUOV.js');
9
9
  require('./chunk-WKV4G7E6.js');
10
10
 
11
11
 
12
- exports.FolksRouterClient = _chunkV4ANJGMAjs.FolksRouterClient;
12
+ exports.FolksRouterClient = _chunkVPHDL2GPjs.FolksRouterClient;
13
13
  //# sourceMappingURL=FolksRouterClient.js.map
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  FolksRouterClient
3
- } from "./chunk-WPZIOEUM.mjs";
4
- import "./chunk-DHU34JLH.mjs";
3
+ } from "./chunk-YPK7GFUE.mjs";
4
+ import "./chunk-B3QVYTBC.mjs";
5
5
  import "./chunk-VGT24JDM.mjs";
6
6
  import "./chunk-YMVA5ZDD.mjs";
7
7
  import "./chunk-CV77XZT3.mjs";
8
- import "./chunk-LE66KKNU.mjs";
8
+ import "./chunk-JUBOHIQC.mjs";
9
9
  import "./chunk-EYGQH356.mjs";
10
10
  export {
11
11
  FolksRouterClient
package/dist/checks.js CHANGED
@@ -1,12 +1,12 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkSADXHAXYjs = require('./chunk-SADXHAXY.js');
3
+ var _chunk35AIBYIPjs = require('./chunk-35AIBYIP.js');
4
4
  require('./chunk-WSXBJBEU.js');
5
5
  require('./chunk-IVNVWRCM.js');
6
6
  require('./chunk-MEC4OKES.js');
7
- require('./chunk-GTEUZNDL.js');
7
+ require('./chunk-OM7CUUOV.js');
8
8
  require('./chunk-WKV4G7E6.js');
9
9
 
10
10
 
11
- exports.checkSwapTransactions = _chunkSADXHAXYjs.checkSwapTransactions;
11
+ exports.checkSwapTransactions = _chunk35AIBYIPjs.checkSwapTransactions;
12
12
  //# sourceMappingURL=checks.js.map
package/dist/checks.mjs CHANGED
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  checkSwapTransactions
3
- } from "./chunk-DHU34JLH.mjs";
3
+ } from "./chunk-B3QVYTBC.mjs";
4
4
  import "./chunk-VGT24JDM.mjs";
5
5
  import "./chunk-YMVA5ZDD.mjs";
6
6
  import "./chunk-CV77XZT3.mjs";
7
- import "./chunk-LE66KKNU.mjs";
7
+ import "./chunk-JUBOHIQC.mjs";
8
8
  import "./chunk-EYGQH356.mjs";
9
9
  export {
10
10
  checkSwapTransactions
@@ -0,0 +1,77 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
+
3
+ var _chunkWSXBJBEUjs = require('./chunk-WSXBJBEU.js');
4
+
5
+
6
+ var _chunkIVNVWRCMjs = require('./chunk-IVNVWRCM.js');
7
+
8
+
9
+
10
+ var _chunkOM7CUUOVjs = require('./chunk-OM7CUUOV.js');
11
+
12
+
13
+ var _chunkWKV4G7E6js = require('./chunk-WKV4G7E6.js');
14
+
15
+ // src/checks.ts
16
+
17
+
18
+
19
+
20
+
21
+
22
+ var _algosdk = require('algosdk');
23
+ function checkSwapTransactions(network, unsignedTxns, params, userAddress, slippageBps, swapQuote) {
24
+ const { fromAssetId, toAssetId, amount, swapMode } = params;
25
+ const folksRouterAppId = network == "mainnet" /* MAINNET */ ? _chunkWSXBJBEUjs.MainnetFolksRouterAppId : _chunkIVNVWRCMjs.TestnetFolksRouterAppId;
26
+ const folksRouterAddr = _algosdk.getApplicationAddress.call(void 0, folksRouterAppId);
27
+ const getHexSelector = (method) => Buffer.from(_chunkWKV4G7E6js.routerABIContract.getMethodByName(method).getSelector()).toString("hex");
28
+ const uint8ArrayToHex = (uint8Array) => Buffer.from(uint8Array).toString("hex");
29
+ const sendAssetTxn = unsignedTxns[0];
30
+ const swapForwardTxns = unsignedTxns.slice(1, -1);
31
+ const swapEndTxn = unsignedTxns[unsignedTxns.length - 1];
32
+ if (sendAssetTxn.rekeyTo !== void 0) throw Error("Unexpected rekey");
33
+ if (_optionalChain([sendAssetTxn, 'access', _ => _.payment, 'optionalAccess', _2 => _2.closeRemainderTo]) !== void 0) throw Error("Unexpected close remainder to");
34
+ if (_optionalChain([sendAssetTxn, 'access', _3 => _3.assetTransfer, 'optionalAccess', _4 => _4.closeRemainderTo]) !== void 0) throw Error("Unexpected close remainder to");
35
+ if (_algosdk.encodeAddress.call(void 0, sendAssetTxn.sender.publicKey) !== userAddress) throw Error("Incorrect sender");
36
+ if (sendAssetTxn.payment && _algosdk.encodeAddress.call(void 0, sendAssetTxn.payment.receiver.publicKey) !== folksRouterAddr.toString())
37
+ throw Error("Incorrect receiver");
38
+ if (sendAssetTxn.assetTransfer && _algosdk.encodeAddress.call(void 0, sendAssetTxn.assetTransfer.receiver.publicKey) !== folksRouterAddr.toString())
39
+ throw Error("Incorrect receiver");
40
+ if (!(fromAssetId === 0 && sendAssetTxn.type == _algosdk.TransactionType.pay) && !(sendAssetTxn.type === _algosdk.TransactionType.axfer && sendAssetTxn.assetTransfer && BigInt(fromAssetId) === sendAssetTxn.assetTransfer.assetIndex))
41
+ throw Error("Sending incorrect algo/asset");
42
+ const sendAmount = sendAssetTxn.payment ? sendAssetTxn.payment.amount : sendAssetTxn.assetTransfer.amount;
43
+ swapForwardTxns.forEach((txn, i) => {
44
+ if (_algosdk.encodeAddress.call(void 0, txn.sender.publicKey) !== userAddress) throw Error("Incorrect sender");
45
+ if (_optionalChain([txn, 'access', _5 => _5.applicationCall, 'optionalAccess', _6 => _6.appIndex]) !== BigInt(folksRouterAppId)) throw Error("Incorrect application index");
46
+ if (txn.type !== _algosdk.TransactionType.appl && txn.applicationCall.onComplete !== _algosdk.OnApplicationComplete.NoOpOC)
47
+ throw Error("Incorrect transaction type");
48
+ const swapForwardSelector = uint8ArrayToHex(txn.applicationCall.appArgs.at(0));
49
+ if (swapForwardSelector !== getHexSelector("swap_forward")) throw Error("Incorrect selector");
50
+ });
51
+ if (_algosdk.encodeAddress.call(void 0, swapEndTxn.sender.publicKey) !== userAddress) throw Error("Incorrect sender");
52
+ if (_optionalChain([swapEndTxn, 'access', _7 => _7.applicationCall, 'optionalAccess', _8 => _8.appIndex]) !== BigInt(folksRouterAppId)) throw Error("Incorrect application index");
53
+ if (swapEndTxn.type !== _algosdk.TransactionType.appl && swapEndTxn.applicationCall.onComplete !== _algosdk.OnApplicationComplete.NoOpOC)
54
+ throw Error("Incorrect transaction type");
55
+ const swapEndSelector = uint8ArrayToHex(swapEndTxn.applicationCall.appArgs.at(0));
56
+ const isFixedInput = swapEndSelector === getHexSelector("fi_end_swap");
57
+ const isFixedOutput = swapEndSelector === getHexSelector("fo_end_swap");
58
+ if (isFixedInput && swapMode !== "FIXED_INPUT" /* FIXED_INPUT */ || isFixedOutput && swapMode !== "FIXED_OUTPUT" /* FIXED_OUTPUT */)
59
+ throw Error("Incorrect swap mode");
60
+ if (_algosdk.ABIType.from("uint64").decode(swapEndTxn.applicationCall.appArgs.at(1)) !== BigInt(toAssetId))
61
+ throw Error("Receiving incorrect algo/asset");
62
+ const receiveAmount = _algosdk.ABIType.from("uint64").decode(swapEndTxn.applicationCall.appArgs.at(2));
63
+ const slippageAmount = _chunkOM7CUUOVjs.mulScale.call(void 0, swapQuote.quoteAmount, BigInt(slippageBps), _chunkOM7CUUOVjs.ONE_4_DP);
64
+ if (isFixedInput) {
65
+ if (amount !== sendAmount) throw Error("Sending incorrect fixed input amount");
66
+ if (swapQuote.quoteAmount - slippageAmount !== receiveAmount) throw Error("Receiving incorrect fixed input amount");
67
+ }
68
+ if (isFixedOutput) {
69
+ if (swapQuote.quoteAmount + slippageAmount !== sendAmount) throw Error("Sending incorrect fixed output amount");
70
+ if (amount !== receiveAmount) throw Error("Receiving incorrect fixed output amount");
71
+ }
72
+ }
73
+
74
+
75
+
76
+ exports.checkSwapTransactions = checkSwapTransactions;
77
+ //# sourceMappingURL=chunk-35AIBYIP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/chunk-35AIBYIP.js","../src/checks.ts"],"names":[],"mappings":"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","file":"/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/chunk-35AIBYIP.js","sourcesContent":[null,"import {\n ABIType,\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.payment?.closeRemainderTo !== undefined) throw Error(\"Unexpected close remainder to\");\n if (sendAssetTxn.assetTransfer?.closeRemainderTo !== undefined) throw Error(\"Unexpected close remainder to\");\n if (encodeAddress(sendAssetTxn.sender.publicKey) !== userAddress) throw Error(\"Incorrect sender\");\n if (sendAssetTxn.payment && encodeAddress(sendAssetTxn.payment.receiver.publicKey) !== folksRouterAddr.toString())\n throw Error(\"Incorrect receiver\");\n if (\n sendAssetTxn.assetTransfer &&\n encodeAddress(sendAssetTxn.assetTransfer.receiver.publicKey) !== folksRouterAddr.toString()\n )\n throw Error(\"Incorrect receiver\");\n if (\n !(fromAssetId === 0 && sendAssetTxn.type == TransactionType.pay) &&\n !(\n sendAssetTxn.type === TransactionType.axfer &&\n sendAssetTxn.assetTransfer &&\n BigInt(fromAssetId) === sendAssetTxn.assetTransfer.assetIndex\n )\n )\n throw Error(\"Sending incorrect algo/asset\");\n const sendAmount = sendAssetTxn.payment ? sendAssetTxn.payment.amount : sendAssetTxn.assetTransfer!.amount;\n\n // swap forward txns\n swapForwardTxns.forEach((txn, i) => {\n if (encodeAddress(txn.sender.publicKey) !== userAddress) throw Error(\"Incorrect sender\");\n if (txn.applicationCall?.appIndex !== BigInt(folksRouterAppId)) throw Error(\"Incorrect application index\");\n if (txn.type !== TransactionType.appl && txn.applicationCall.onComplete !== OnApplicationComplete.NoOpOC)\n throw Error(\"Incorrect transaction type\");\n const swapForwardSelector = uint8ArrayToHex(txn.applicationCall.appArgs.at(0)!);\n if (swapForwardSelector !== getHexSelector(\"swap_forward\")) throw Error(\"Incorrect selector\");\n });\n\n // receive algo/asset\n if (encodeAddress(swapEndTxn.sender.publicKey) !== userAddress) throw Error(\"Incorrect sender\");\n if (swapEndTxn.applicationCall?.appIndex !== BigInt(folksRouterAppId)) throw Error(\"Incorrect application index\");\n if (\n swapEndTxn.type !== TransactionType.appl &&\n swapEndTxn.applicationCall.onComplete !== OnApplicationComplete.NoOpOC\n )\n throw Error(\"Incorrect transaction type\");\n const swapEndSelector = uint8ArrayToHex(swapEndTxn.applicationCall.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.applicationCall.appArgs.at(1)!) !== BigInt(toAssetId))\n throw Error(\"Receiving incorrect algo/asset\");\n const receiveAmount = ABIType.from(\"uint64\").decode(swapEndTxn.applicationCall.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"]}
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  ONE_4_DP,
9
9
  mulScale
10
- } from "./chunk-LE66KKNU.mjs";
10
+ } from "./chunk-JUBOHIQC.mjs";
11
11
  import {
12
12
  routerABIContract
13
13
  } from "./chunk-EYGQH356.mjs";
@@ -15,7 +15,6 @@ import {
15
15
  // src/checks.ts
16
16
  import {
17
17
  ABIType,
18
- decodeAddress,
19
18
  encodeAddress,
20
19
  getApplicationAddress,
21
20
  OnApplicationComplete,
@@ -30,33 +29,37 @@ function checkSwapTransactions(network, unsignedTxns, params, userAddress, slipp
30
29
  const sendAssetTxn = unsignedTxns[0];
31
30
  const swapForwardTxns = unsignedTxns.slice(1, -1);
32
31
  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))
32
+ if (sendAssetTxn.rekeyTo !== void 0) throw Error("Unexpected rekey");
33
+ if (sendAssetTxn.payment?.closeRemainderTo !== void 0) throw Error("Unexpected close remainder to");
34
+ if (sendAssetTxn.assetTransfer?.closeRemainderTo !== void 0) throw Error("Unexpected close remainder to");
35
+ if (encodeAddress(sendAssetTxn.sender.publicKey) !== userAddress) throw Error("Incorrect sender");
36
+ if (sendAssetTxn.payment && encodeAddress(sendAssetTxn.payment.receiver.publicKey) !== folksRouterAddr.toString())
37
+ throw Error("Incorrect receiver");
38
+ if (sendAssetTxn.assetTransfer && encodeAddress(sendAssetTxn.assetTransfer.receiver.publicKey) !== folksRouterAddr.toString())
39
+ throw Error("Incorrect receiver");
40
+ if (!(fromAssetId === 0 && sendAssetTxn.type == TransactionType.pay) && !(sendAssetTxn.type === TransactionType.axfer && sendAssetTxn.assetTransfer && BigInt(fromAssetId) === sendAssetTxn.assetTransfer.assetIndex))
38
41
  throw Error("Sending incorrect algo/asset");
39
- const sendAmount = BigInt(sendAssetTxn.amount);
42
+ const sendAmount = sendAssetTxn.payment ? sendAssetTxn.payment.amount : sendAssetTxn.assetTransfer.amount;
40
43
  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
+ if (encodeAddress(txn.sender.publicKey) !== userAddress) throw Error("Incorrect sender");
45
+ if (txn.applicationCall?.appIndex !== BigInt(folksRouterAppId)) throw Error("Incorrect application index");
46
+ if (txn.type !== TransactionType.appl && txn.applicationCall.onComplete !== OnApplicationComplete.NoOpOC)
44
47
  throw Error("Incorrect transaction type");
45
- const swapForwardSelector = uint8ArrayToHex(txn.appArgs.at(0));
48
+ const swapForwardSelector = uint8ArrayToHex(txn.applicationCall.appArgs.at(0));
46
49
  if (swapForwardSelector !== getHexSelector("swap_forward")) throw Error("Incorrect selector");
47
50
  });
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
+ if (encodeAddress(swapEndTxn.sender.publicKey) !== userAddress) throw Error("Incorrect sender");
52
+ if (swapEndTxn.applicationCall?.appIndex !== BigInt(folksRouterAppId)) throw Error("Incorrect application index");
53
+ if (swapEndTxn.type !== TransactionType.appl && swapEndTxn.applicationCall.onComplete !== OnApplicationComplete.NoOpOC)
51
54
  throw Error("Incorrect transaction type");
52
- const swapEndSelector = uint8ArrayToHex(swapEndTxn.appArgs.at(0));
55
+ const swapEndSelector = uint8ArrayToHex(swapEndTxn.applicationCall.appArgs.at(0));
53
56
  const isFixedInput = swapEndSelector === getHexSelector("fi_end_swap");
54
57
  const isFixedOutput = swapEndSelector === getHexSelector("fo_end_swap");
55
58
  if (isFixedInput && swapMode !== "FIXED_INPUT" /* FIXED_INPUT */ || isFixedOutput && swapMode !== "FIXED_OUTPUT" /* FIXED_OUTPUT */)
56
59
  throw Error("Incorrect swap mode");
57
- if (ABIType.from("uint64").decode(swapEndTxn.appArgs.at(1)) !== BigInt(toAssetId))
60
+ if (ABIType.from("uint64").decode(swapEndTxn.applicationCall.appArgs.at(1)) !== BigInt(toAssetId))
58
61
  throw Error("Receiving incorrect algo/asset");
59
- const receiveAmount = ABIType.from("uint64").decode(swapEndTxn.appArgs.at(2));
62
+ const receiveAmount = ABIType.from("uint64").decode(swapEndTxn.applicationCall.appArgs.at(2));
60
63
  const slippageAmount = mulScale(swapQuote.quoteAmount, BigInt(slippageBps), ONE_4_DP);
61
64
  if (isFixedInput) {
62
65
  if (amount !== sendAmount) throw Error("Sending incorrect fixed input amount");
@@ -71,4 +74,4 @@ function checkSwapTransactions(network, unsignedTxns, params, userAddress, slipp
71
74
  export {
72
75
  checkSwapTransactions
73
76
  };
74
- //# sourceMappingURL=chunk-DHU34JLH.mjs.map
77
+ //# sourceMappingURL=chunk-B3QVYTBC.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/checks.ts"],"sourcesContent":["import {\n ABIType,\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.payment?.closeRemainderTo !== undefined) throw Error(\"Unexpected close remainder to\");\n if (sendAssetTxn.assetTransfer?.closeRemainderTo !== undefined) throw Error(\"Unexpected close remainder to\");\n if (encodeAddress(sendAssetTxn.sender.publicKey) !== userAddress) throw Error(\"Incorrect sender\");\n if (sendAssetTxn.payment && encodeAddress(sendAssetTxn.payment.receiver.publicKey) !== folksRouterAddr.toString())\n throw Error(\"Incorrect receiver\");\n if (\n sendAssetTxn.assetTransfer &&\n encodeAddress(sendAssetTxn.assetTransfer.receiver.publicKey) !== folksRouterAddr.toString()\n )\n throw Error(\"Incorrect receiver\");\n if (\n !(fromAssetId === 0 && sendAssetTxn.type == TransactionType.pay) &&\n !(\n sendAssetTxn.type === TransactionType.axfer &&\n sendAssetTxn.assetTransfer &&\n BigInt(fromAssetId) === sendAssetTxn.assetTransfer.assetIndex\n )\n )\n throw Error(\"Sending incorrect algo/asset\");\n const sendAmount = sendAssetTxn.payment ? sendAssetTxn.payment.amount : sendAssetTxn.assetTransfer!.amount;\n\n // swap forward txns\n swapForwardTxns.forEach((txn, i) => {\n if (encodeAddress(txn.sender.publicKey) !== userAddress) throw Error(\"Incorrect sender\");\n if (txn.applicationCall?.appIndex !== BigInt(folksRouterAppId)) throw Error(\"Incorrect application index\");\n if (txn.type !== TransactionType.appl && txn.applicationCall.onComplete !== OnApplicationComplete.NoOpOC)\n throw Error(\"Incorrect transaction type\");\n const swapForwardSelector = uint8ArrayToHex(txn.applicationCall.appArgs.at(0)!);\n if (swapForwardSelector !== getHexSelector(\"swap_forward\")) throw Error(\"Incorrect selector\");\n });\n\n // receive algo/asset\n if (encodeAddress(swapEndTxn.sender.publicKey) !== userAddress) throw Error(\"Incorrect sender\");\n if (swapEndTxn.applicationCall?.appIndex !== BigInt(folksRouterAppId)) throw Error(\"Incorrect application index\");\n if (\n swapEndTxn.type !== TransactionType.appl &&\n swapEndTxn.applicationCall.onComplete !== OnApplicationComplete.NoOpOC\n )\n throw Error(\"Incorrect transaction type\");\n const swapEndSelector = uint8ArrayToHex(swapEndTxn.applicationCall.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.applicationCall.appArgs.at(1)!) !== BigInt(toAssetId))\n throw Error(\"Receiving incorrect algo/asset\");\n const receiveAmount = ABIType.from(\"uint64\").decode(swapEndTxn.applicationCall.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":"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","names":[]}
@@ -4,14 +4,14 @@ import {
4
4
  makePaymentTxnWithSuggestedParamsFromObject
5
5
  } from "algosdk";
6
6
  var signer = async () => [];
7
- function transferAlgoOrAsset(assetId, from, to, amount, params) {
7
+ function transferAlgoOrAsset(assetId, sender, receiver, amount, params) {
8
8
  return assetId !== 0 ? makeAssetTransferTxnWithSuggestedParamsFromObject({
9
- from,
10
- to,
9
+ sender,
10
+ receiver,
11
11
  amount,
12
12
  suggestedParams: params,
13
13
  assetIndex: assetId
14
- }) : makePaymentTxnWithSuggestedParamsFromObject({ from, to, amount, suggestedParams: params });
14
+ }) : makePaymentTxnWithSuggestedParamsFromObject({ sender, receiver, amount, suggestedParams: params });
15
15
  }
16
16
  var ONE_4_DP = BigInt(1e4);
17
17
  function mulScale(n1, n2, scale) {
@@ -24,4 +24,4 @@ export {
24
24
  ONE_4_DP,
25
25
  mulScale
26
26
  };
27
- //# sourceMappingURL=chunk-LE66KKNU.mjs.map
27
+ //# sourceMappingURL=chunk-JUBOHIQC.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 sender: string,\n receiver: string,\n amount: number | bigint,\n params: SuggestedParams,\n): Transaction {\n return assetId !== 0\n ? makeAssetTransferTxnWithSuggestedParamsFromObject({\n sender,\n receiver,\n amount,\n suggestedParams: params,\n assetIndex: assetId,\n })\n : makePaymentTxnWithSuggestedParamsFromObject({ sender, receiver, 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,QACA,UACA,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,QAAQ,UAAU,QAAQ,iBAAiB,OAAO,CAAC;AACvG;AAEA,IAAM,WAAW,OAAO,GAAG;AAE3B,SAAS,SAAS,IAAY,IAAY,OAAuB;AAC/D,SAAQ,KAAK,KAAM;AACrB;","names":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkGTEUZNDLjs = require('./chunk-GTEUZNDL.js');
3
+ var _chunkOM7CUUOVjs = require('./chunk-OM7CUUOV.js');
4
4
 
5
5
  // src/referrer.ts
6
6
 
@@ -183,19 +183,25 @@ function getReferrerLogicSig(referrerAddr) {
183
183
  }
184
184
  var buildReferrerGroupTransaction = (txns, lsig) => _algosdk.assignGroupID.call(void 0, txns).map((txn) => ({
185
185
  unsignedTxn: _algosdk.encodeUnsignedTransaction.call(void 0, txn),
186
- lsig: _algosdk.encodeAddress.call(void 0, txn.from.publicKey) === lsig.address() ? lsig.toByte() : void 0
186
+ lsig: _algosdk.encodeAddress.call(void 0, txn.sender.publicKey) === lsig.address().toString() ? lsig.toByte() : void 0
187
187
  }));
188
188
  function prepareReferrerOptIntoAsset(senderAddr, referrerAddr, assetId, params) {
189
189
  const lsig = getReferrerLogicSig(referrerAddr);
190
190
  const MIN_BALANCE = BigInt(1e5);
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 });
191
+ const minBalancePayment = _chunkOM7CUUOVjs.transferAlgoOrAsset.call(void 0, 0, senderAddr, lsig.address().toString(), MIN_BALANCE, {
192
+ ...params,
193
+ fee: 2e3
194
+ });
195
+ const assetOptIn = _chunkOM7CUUOVjs.transferAlgoOrAsset.call(void 0, assetId, lsig.address().toString(), lsig.address().toString(), 0, {
196
+ ...params,
197
+ fee: 0
198
+ });
193
199
  return buildReferrerGroupTransaction([minBalancePayment, assetOptIn], lsig);
194
200
  }
195
201
  function prepareClaimReferrerFees(senderAddr, referrerAddr, assetId, amount, params) {
196
202
  const lsig = getReferrerLogicSig(referrerAddr);
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 });
203
+ const groupFeePayment = _chunkOM7CUUOVjs.transferAlgoOrAsset.call(void 0, 0, senderAddr, senderAddr, 0, { ...params, fee: 2e3 });
204
+ const claim = _chunkOM7CUUOVjs.transferAlgoOrAsset.call(void 0, assetId, lsig.address().toString(), referrerAddr, amount, { ...params, fee: 0 });
199
205
  return buildReferrerGroupTransaction([groupFeePayment, claim], lsig);
200
206
  }
201
207
 
@@ -204,4 +210,4 @@ function prepareClaimReferrerFees(senderAddr, referrerAddr, assetId, amount, par
204
210
 
205
211
 
206
212
  exports.getReferrerLogicSig = getReferrerLogicSig; exports.prepareReferrerOptIntoAsset = prepareReferrerOptIntoAsset; exports.prepareClaimReferrerFees = prepareClaimReferrerFees;
207
- //# sourceMappingURL=chunk-GRBEXEIP.js.map
213
+ //# sourceMappingURL=chunk-KLU7UE4D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/chunk-KLU7UE4D.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-KLU7UE4D.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.sender.publicKey) === lsig.address().toString() ? 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().toString(), MIN_BALANCE, {\n ...params,\n fee: 2000,\n });\n const assetOptIn = transferAlgoOrAsset(assetId, lsig.address().toString(), lsig.address().toString(), 0, {\n ...params,\n fee: 0,\n });\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().toString(), 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"]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  signer,
3
3
  transferAlgoOrAsset
4
- } from "./chunk-LE66KKNU.mjs";
4
+ } from "./chunk-JUBOHIQC.mjs";
5
5
  import {
6
6
  routerABIContract
7
7
  } from "./chunk-EYGQH356.mjs";
@@ -15,7 +15,7 @@ import {
15
15
  } from "algosdk";
16
16
  function prepareEnableAssetToBeSwapped(appId, senderAddr, assetIds, params) {
17
17
  const amount = assetIds.length * 1e5;
18
- const paymentTxn = transferAlgoOrAsset(0, senderAddr, getApplicationAddress(appId), amount, params);
18
+ const paymentTxn = transferAlgoOrAsset(0, senderAddr, getApplicationAddress(appId).toString(), amount, params);
19
19
  const atc = new AtomicTransactionComposer();
20
20
  atc.addMethodCall({
21
21
  sender: senderAddr,
@@ -36,4 +36,4 @@ function prepareEnableAssetToBeSwapped(appId, senderAddr, assetIds, params) {
36
36
  export {
37
37
  prepareEnableAssetToBeSwapped
38
38
  };
39
- //# sourceMappingURL=chunk-GWQ2U3UO.mjs.map
39
+ //# sourceMappingURL=chunk-NT3M7HTQ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/swap.ts"],"sourcesContent":["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).toString(), 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"],"mappings":";;;;;;;;;AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAIP,SAAS,8BACP,OACA,YACA,UACA,QACe;AAEf,QAAM,SAAS,SAAS,SAAS;AACjC,QAAM,aAAa,oBAAoB,GAAG,YAAY,sBAAsB,KAAK,EAAE,SAAS,GAAG,QAAQ,MAAM;AAG7G,QAAM,MAAM,IAAI,0BAA0B;AAC1C,MAAI,cAAc;AAAA,IAChB,QAAQ;AAAA,IACR;AAAA,IACA,OAAO;AAAA,IACP,QAAQ,gBAAgB,kBAAkB,SAAS,iBAAiB;AAAA,IACpE,YAAY,CAAC,QAAQ;AAAA,IACrB,kBAAkB;AAAA,IAClB,iBAAiB,EAAE,GAAG,QAAQ,MAAM,IAAI,SAAS,UAAU,IAAK;AAAA,EAClE,CAAC;AACD,QAAM,OAAO,IAAI,WAAW,EAAE,IAAI,CAAC,EAAE,IAAI,MAAM;AAC7C,QAAI,QAAQ;AACZ,WAAO;AAAA,EACT,CAAC;AACD,SAAO,cAAc,CAAC,YAAY,KAAK,CAAC,CAAE,CAAC;AAC7C;","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  transferAlgoOrAsset
3
- } from "./chunk-LE66KKNU.mjs";
3
+ } from "./chunk-JUBOHIQC.mjs";
4
4
 
5
5
  // src/referrer.ts
6
6
  import {
@@ -183,19 +183,25 @@ function getReferrerLogicSig(referrerAddr) {
183
183
  }
184
184
  var buildReferrerGroupTransaction = (txns, lsig) => assignGroupID(txns).map((txn) => ({
185
185
  unsignedTxn: encodeUnsignedTransaction(txn),
186
- lsig: encodeAddress(txn.from.publicKey) === lsig.address() ? lsig.toByte() : void 0
186
+ lsig: encodeAddress(txn.sender.publicKey) === lsig.address().toString() ? lsig.toByte() : void 0
187
187
  }));
188
188
  function prepareReferrerOptIntoAsset(senderAddr, referrerAddr, assetId, params) {
189
189
  const lsig = getReferrerLogicSig(referrerAddr);
190
190
  const MIN_BALANCE = BigInt(1e5);
191
- const minBalancePayment = transferAlgoOrAsset(0, senderAddr, lsig.address(), MIN_BALANCE, { ...params, fee: 2e3 });
192
- const assetOptIn = transferAlgoOrAsset(assetId, lsig.address(), lsig.address(), 0, { ...params, fee: 0 });
191
+ const minBalancePayment = transferAlgoOrAsset(0, senderAddr, lsig.address().toString(), MIN_BALANCE, {
192
+ ...params,
193
+ fee: 2e3
194
+ });
195
+ const assetOptIn = transferAlgoOrAsset(assetId, lsig.address().toString(), lsig.address().toString(), 0, {
196
+ ...params,
197
+ fee: 0
198
+ });
193
199
  return buildReferrerGroupTransaction([minBalancePayment, assetOptIn], lsig);
194
200
  }
195
201
  function prepareClaimReferrerFees(senderAddr, referrerAddr, assetId, amount, params) {
196
202
  const lsig = getReferrerLogicSig(referrerAddr);
197
203
  const groupFeePayment = transferAlgoOrAsset(0, senderAddr, senderAddr, 0, { ...params, fee: 2e3 });
198
- const claim = transferAlgoOrAsset(assetId, lsig.address(), referrerAddr, amount, { ...params, fee: 0 });
204
+ const claim = transferAlgoOrAsset(assetId, lsig.address().toString(), referrerAddr, amount, { ...params, fee: 0 });
199
205
  return buildReferrerGroupTransaction([groupFeePayment, claim], lsig);
200
206
  }
201
207
 
@@ -204,4 +210,4 @@ export {
204
210
  prepareReferrerOptIntoAsset,
205
211
  prepareClaimReferrerFees
206
212
  };
207
- //# sourceMappingURL=chunk-GQO2R6ON.mjs.map
213
+ //# sourceMappingURL=chunk-ODZGUTBU.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/referrer.ts"],"sourcesContent":["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.sender.publicKey) === lsig.address().toString() ? 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().toString(), MIN_BALANCE, {\n ...params,\n fee: 2000,\n });\n const assetOptIn = transferAlgoOrAsset(assetId, lsig.address().toString(), lsig.address().toString(), 0, {\n ...params,\n fee: 0,\n });\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().toString(), 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"],"mappings":"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","names":[]}
@@ -4,14 +4,14 @@
4
4
 
5
5
  var _algosdk = require('algosdk');
6
6
  var signer = async () => [];
7
- function transferAlgoOrAsset(assetId, from, to, amount, params) {
7
+ function transferAlgoOrAsset(assetId, sender, receiver, amount, params) {
8
8
  return assetId !== 0 ? _algosdk.makeAssetTransferTxnWithSuggestedParamsFromObject.call(void 0, {
9
- from,
10
- to,
9
+ sender,
10
+ receiver,
11
11
  amount,
12
12
  suggestedParams: params,
13
13
  assetIndex: assetId
14
- }) : _algosdk.makePaymentTxnWithSuggestedParamsFromObject.call(void 0, { from, to, amount, suggestedParams: params });
14
+ }) : _algosdk.makePaymentTxnWithSuggestedParamsFromObject.call(void 0, { sender, receiver, amount, suggestedParams: params });
15
15
  }
16
16
  var ONE_4_DP = BigInt(1e4);
17
17
  function mulScale(n1, n2, scale) {
@@ -24,4 +24,4 @@ function mulScale(n1, n2, scale) {
24
24
 
25
25
 
26
26
  exports.signer = signer; exports.transferAlgoOrAsset = transferAlgoOrAsset; exports.ONE_4_DP = ONE_4_DP; exports.mulScale = mulScale;
27
- //# sourceMappingURL=chunk-GTEUZNDL.js.map
27
+ //# sourceMappingURL=chunk-OM7CUUOV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/chunk-OM7CUUOV.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,MAAA,EACA,QAAA,EACA,MAAA,EACA,MAAA,EACa;AACb,EAAA,OAAO,QAAA,IAAY,EAAA,EACf,wEAAA;AAAkD,IAChD,MAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,eAAA,EAAiB,MAAA;AAAA,IACjB,UAAA,EAAY;AAAA,EACd,CAAC,EAAA,EACD,kEAAA,EAA8C,MAAA,EAAQ,QAAA,EAAU,MAAA,EAAQ,eAAA,EAAiB,OAAO,CAAC,CAAA;AACvG;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-OM7CUUOV.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 sender: string,\n receiver: string,\n amount: number | bigint,\n params: SuggestedParams,\n): Transaction {\n return assetId !== 0\n ? makeAssetTransferTxnWithSuggestedParamsFromObject({\n sender,\n receiver,\n amount,\n suggestedParams: params,\n assetIndex: assetId,\n })\n : makePaymentTxnWithSuggestedParamsFromObject({ sender, receiver, 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,8 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var _chunkSADXHAXYjs = require('./chunk-SADXHAXY.js');
3
+ var _chunk35AIBYIPjs = require('./chunk-35AIBYIP.js');
4
4
 
5
5
  // src/FolksRouterClient.ts
6
-
7
-
8
6
  var _algosdk = require('algosdk');
9
7
  var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios);
10
8
  var BASE_URL = "https://api.folksrouter.io";
@@ -65,7 +63,7 @@ var FolksRouterClient = class {
65
63
  const unsignedTxns = data.result.map(
66
64
  (txn) => _algosdk.decodeUnsignedTransaction.call(void 0, Buffer.from(txn, "base64"))
67
65
  );
68
- _chunkSADXHAXYjs.checkSwapTransactions.call(void 0, this.network, unsignedTxns, params, userAddress, slippageBps, swapQuote);
66
+ _chunk35AIBYIPjs.checkSwapTransactions.call(void 0, this.network, unsignedTxns, params, userAddress, slippageBps, swapQuote);
69
67
  return data.result;
70
68
  }
71
69
  };
@@ -73,4 +71,4 @@ var FolksRouterClient = class {
73
71
 
74
72
 
75
73
  exports.FolksRouterClient = FolksRouterClient;
76
- //# sourceMappingURL=chunk-V4ANJGMA.js.map
74
+ //# sourceMappingURL=chunk-VPHDL2GP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/chunk-VPHDL2GP.js","../src/FolksRouterClient.ts"],"names":[],"mappings":"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","file":"/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/chunk-VPHDL2GP.js","sourcesContent":[null,"import { decodeUnsignedTransaction, Transaction } from \"algosdk\";\nimport axios, { AxiosInstance } from \"axios\";\nimport { Network, SwapParams, SwapQuote, SwapTransactions } from \"./types\";\nimport { checkSwapTransactions } from \"./checks\";\n\nconst BASE_URL = \"https://api.folksrouter.io\";\n\nexport class FolksRouterClient {\n private readonly network: Network;\n private readonly api: AxiosInstance;\n\n constructor(network: Network, apiKey?: string) {\n // construct url\n let url = BASE_URL;\n if (network === Network.TESTNET) url += \"/testnet\";\n url += \"/v2\";\n if (apiKey !== undefined) {\n url += \"/pro\";\n }\n\n // set\n this.network = network;\n this.api = axios.create({ baseURL: url, headers: { \"x-api-key\": apiKey } });\n }\n\n public async fetchUserDiscount(userAddress: string): Promise<number> {\n const { data } = await this.api.get(\"/fetch/discount\", {\n params: {\n network: this.network,\n userAddress,\n },\n });\n if (!data.success) throw Error(data.errors);\n\n return data.result;\n }\n\n public async fetchSwapQuote(\n params: SwapParams,\n maxGroupSize?: number,\n feeBps?: number | bigint,\n userFeeDiscount?: number | bigint,\n referrer?: string,\n ): Promise<SwapQuote> {\n const { fromAssetId, toAssetId, amount, swapMode } = params;\n\n const { data } = await this.api.get(\"/fetch/quote\", {\n params: {\n network: this.network,\n fromAsset: fromAssetId,\n toAsset: toAssetId,\n amount,\n type: swapMode,\n maxGroupSize,\n feeBps,\n userFeeDiscount,\n referrer,\n },\n });\n if (!data.success) throw Error(data.errors);\n\n const { quoteAmount, priceImpact, microalgoTxnsFee, txnPayload } = data.result;\n\n return {\n quoteAmount: BigInt(quoteAmount),\n priceImpact,\n microalgoTxnsFee,\n txnPayload,\n };\n }\n\n public async prepareSwapTransactions(\n params: SwapParams,\n userAddress: string,\n slippageBps: number | bigint,\n swapQuote: SwapQuote,\n ): Promise<SwapTransactions> {\n // fetch transactions\n const { data } = await this.api.get(\"/prepare/swap\", {\n params: {\n userAddress,\n slippageBps,\n txnPayload: swapQuote.txnPayload,\n },\n });\n if (!data.success) throw Error(data.errors);\n\n // check transactions\n const unsignedTxns: Transaction[] = data.result.map((txn: string) =>\n decodeUnsignedTransaction(Buffer.from(txn, \"base64\")),\n );\n checkSwapTransactions(this.network, unsignedTxns, params, userAddress, slippageBps, swapQuote);\n\n // return\n return data.result;\n }\n}\n"]}
@@ -1,11 +1,9 @@
1
1
  import {
2
2
  checkSwapTransactions
3
- } from "./chunk-DHU34JLH.mjs";
3
+ } from "./chunk-B3QVYTBC.mjs";
4
4
 
5
5
  // src/FolksRouterClient.ts
6
- import {
7
- decodeUnsignedTransaction
8
- } from "algosdk";
6
+ import { decodeUnsignedTransaction } from "algosdk";
9
7
  import axios from "axios";
10
8
  var BASE_URL = "https://api.folksrouter.io";
11
9
  var FolksRouterClient = class {
@@ -73,4 +71,4 @@ var FolksRouterClient = class {
73
71
  export {
74
72
  FolksRouterClient
75
73
  };
76
- //# sourceMappingURL=chunk-WPZIOEUM.mjs.map
74
+ //# sourceMappingURL=chunk-YPK7GFUE.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/FolksRouterClient.ts"],"sourcesContent":["import { decodeUnsignedTransaction, Transaction } from \"algosdk\";\nimport axios, { AxiosInstance } from \"axios\";\nimport { Network, SwapParams, SwapQuote, SwapTransactions } from \"./types\";\nimport { checkSwapTransactions } from \"./checks\";\n\nconst BASE_URL = \"https://api.folksrouter.io\";\n\nexport class FolksRouterClient {\n private readonly network: Network;\n private readonly api: AxiosInstance;\n\n constructor(network: Network, apiKey?: string) {\n // construct url\n let url = BASE_URL;\n if (network === Network.TESTNET) url += \"/testnet\";\n url += \"/v2\";\n if (apiKey !== undefined) {\n url += \"/pro\";\n }\n\n // set\n this.network = network;\n this.api = axios.create({ baseURL: url, headers: { \"x-api-key\": apiKey } });\n }\n\n public async fetchUserDiscount(userAddress: string): Promise<number> {\n const { data } = await this.api.get(\"/fetch/discount\", {\n params: {\n network: this.network,\n userAddress,\n },\n });\n if (!data.success) throw Error(data.errors);\n\n return data.result;\n }\n\n public async fetchSwapQuote(\n params: SwapParams,\n maxGroupSize?: number,\n feeBps?: number | bigint,\n userFeeDiscount?: number | bigint,\n referrer?: string,\n ): Promise<SwapQuote> {\n const { fromAssetId, toAssetId, amount, swapMode } = params;\n\n const { data } = await this.api.get(\"/fetch/quote\", {\n params: {\n network: this.network,\n fromAsset: fromAssetId,\n toAsset: toAssetId,\n amount,\n type: swapMode,\n maxGroupSize,\n feeBps,\n userFeeDiscount,\n referrer,\n },\n });\n if (!data.success) throw Error(data.errors);\n\n const { quoteAmount, priceImpact, microalgoTxnsFee, txnPayload } = data.result;\n\n return {\n quoteAmount: BigInt(quoteAmount),\n priceImpact,\n microalgoTxnsFee,\n txnPayload,\n };\n }\n\n public async prepareSwapTransactions(\n params: SwapParams,\n userAddress: string,\n slippageBps: number | bigint,\n swapQuote: SwapQuote,\n ): Promise<SwapTransactions> {\n // fetch transactions\n const { data } = await this.api.get(\"/prepare/swap\", {\n params: {\n userAddress,\n slippageBps,\n txnPayload: swapQuote.txnPayload,\n },\n });\n if (!data.success) throw Error(data.errors);\n\n // check transactions\n const unsignedTxns: Transaction[] = data.result.map((txn: string) =>\n decodeUnsignedTransaction(Buffer.from(txn, \"base64\")),\n );\n checkSwapTransactions(this.network, unsignedTxns, params, userAddress, slippageBps, swapQuote);\n\n // return\n return data.result;\n }\n}\n"],"mappings":";;;;;AAAA,SAAS,iCAA8C;AACvD,OAAO,WAA8B;AAIrC,IAAM,WAAW;AAEV,IAAM,oBAAN,MAAwB;AAAA,EAI7B,YAAY,SAAkB,QAAiB;AAE7C,QAAI,MAAM;AACV,QAAI,oCAA6B,QAAO;AACxC,WAAO;AACP,QAAI,WAAW,QAAW;AACxB,aAAO;AAAA,IACT;AAGA,SAAK,UAAU;AACf,SAAK,MAAM,MAAM,OAAO,EAAE,SAAS,KAAK,SAAS,EAAE,aAAa,OAAO,EAAE,CAAC;AAAA,EAC5E;AAAA,EAEA,MAAa,kBAAkB,aAAsC;AACnE,UAAM,EAAE,KAAK,IAAI,MAAM,KAAK,IAAI,IAAI,mBAAmB;AAAA,MACrD,QAAQ;AAAA,QACN,SAAS,KAAK;AAAA,QACd;AAAA,MACF;AAAA,IACF,CAAC;AACD,QAAI,CAAC,KAAK,QAAS,OAAM,MAAM,KAAK,MAAM;AAE1C,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAa,eACX,QACA,cACA,QACA,iBACA,UACoB;AACpB,UAAM,EAAE,aAAa,WAAW,QAAQ,SAAS,IAAI;AAErD,UAAM,EAAE,KAAK,IAAI,MAAM,KAAK,IAAI,IAAI,gBAAgB;AAAA,MAClD,QAAQ;AAAA,QACN,SAAS,KAAK;AAAA,QACd,WAAW;AAAA,QACX,SAAS;AAAA,QACT;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,CAAC;AACD,QAAI,CAAC,KAAK,QAAS,OAAM,MAAM,KAAK,MAAM;AAE1C,UAAM,EAAE,aAAa,aAAa,kBAAkB,WAAW,IAAI,KAAK;AAExE,WAAO;AAAA,MACL,aAAa,OAAO,WAAW;AAAA,MAC/B;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAa,wBACX,QACA,aACA,aACA,WAC2B;AAE3B,UAAM,EAAE,KAAK,IAAI,MAAM,KAAK,IAAI,IAAI,iBAAiB;AAAA,MACnD,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA,YAAY,UAAU;AAAA,MACxB;AAAA,IACF,CAAC;AACD,QAAI,CAAC,KAAK,QAAS,OAAM,MAAM,KAAK,MAAM;AAG1C,UAAM,eAA8B,KAAK,OAAO;AAAA,MAAI,CAAC,QACnD,0BAA0B,OAAO,KAAK,KAAK,QAAQ,CAAC;AAAA,IACtD;AACA,0BAAsB,KAAK,SAAS,cAAc,QAAQ,aAAa,aAAa,SAAS;AAG7F,WAAO,KAAK;AAAA,EACd;AACF;","names":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkGTEUZNDLjs = require('./chunk-GTEUZNDL.js');
4
+ var _chunkOM7CUUOVjs = require('./chunk-OM7CUUOV.js');
5
5
 
6
6
 
7
7
  var _chunkWKV4G7E6js = require('./chunk-WKV4G7E6.js');
@@ -15,11 +15,11 @@ var _chunkWKV4G7E6js = require('./chunk-WKV4G7E6.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 = _chunkGTEUZNDLjs.transferAlgoOrAsset.call(void 0, 0, senderAddr, _algosdk.getApplicationAddress.call(void 0, appId), amount, params);
18
+ const paymentTxn = _chunkOM7CUUOVjs.transferAlgoOrAsset.call(void 0, 0, senderAddr, _algosdk.getApplicationAddress.call(void 0, appId).toString(), amount, params);
19
19
  const atc = new (0, _algosdk.AtomicTransactionComposer)();
20
20
  atc.addMethodCall({
21
21
  sender: senderAddr,
22
- signer: _chunkGTEUZNDLjs.signer,
22
+ signer: _chunkOM7CUUOVjs.signer,
23
23
  appID: appId,
24
24
  method: _algosdk.getMethodByName.call(void 0, _chunkWKV4G7E6js.routerABIContract.methods, "opt_into_assets"),
25
25
  methodArgs: [assetIds],
@@ -36,4 +36,4 @@ function prepareEnableAssetToBeSwapped(appId, senderAddr, assetIds, params) {
36
36
 
37
37
 
38
38
  exports.prepareEnableAssetToBeSwapped = prepareEnableAssetToBeSwapped;
39
- //# sourceMappingURL=chunk-BVY7JBOW.js.map
39
+ //# sourceMappingURL=chunk-ZVM64SDR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/chunk-ZVM64SDR.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,CAAE,QAAA,CAAS,CAAA,EAAG,MAAA,EAAQ,MAAM,CAAA;AAG7G,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-ZVM64SDR.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).toString(), 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"]}
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkV4ANJGMAjs = require('./chunk-V4ANJGMA.js');
3
+ var _chunkVPHDL2GPjs = require('./chunk-VPHDL2GP.js');
4
4
 
5
5
 
6
- var _chunkSADXHAXYjs = require('./chunk-SADXHAXY.js');
6
+ var _chunk35AIBYIPjs = require('./chunk-35AIBYIP.js');
7
7
 
8
8
 
9
9
  var _chunkWSXBJBEUjs = require('./chunk-WSXBJBEU.js');
@@ -14,15 +14,15 @@ var _chunkIVNVWRCMjs = require('./chunk-IVNVWRCM.js');
14
14
 
15
15
 
16
16
 
17
- var _chunkGRBEXEIPjs = require('./chunk-GRBEXEIP.js');
17
+ var _chunkKLU7UE4Djs = require('./chunk-KLU7UE4D.js');
18
18
 
19
19
 
20
- var _chunkBVY7JBOWjs = require('./chunk-BVY7JBOW.js');
20
+ var _chunkZVM64SDRjs = require('./chunk-ZVM64SDR.js');
21
21
 
22
22
 
23
23
 
24
24
  var _chunkMEC4OKESjs = require('./chunk-MEC4OKES.js');
25
- require('./chunk-GTEUZNDL.js');
25
+ require('./chunk-OM7CUUOV.js');
26
26
 
27
27
 
28
28
  var _chunkWKV4G7E6js = require('./chunk-WKV4G7E6.js');
@@ -38,5 +38,5 @@ var _chunkWKV4G7E6js = require('./chunk-WKV4G7E6.js');
38
38
 
39
39
 
40
40
 
41
- exports.FolksRouterClient = _chunkV4ANJGMAjs.FolksRouterClient; exports.MainnetFolksRouterAppId = _chunkWSXBJBEUjs.MainnetFolksRouterAppId; exports.Network = _chunkMEC4OKESjs.Network; exports.SwapMode = _chunkMEC4OKESjs.SwapMode; exports.TestnetFolksRouterAppId = _chunkIVNVWRCMjs.TestnetFolksRouterAppId; exports.checkSwapTransactions = _chunkSADXHAXYjs.checkSwapTransactions; exports.getReferrerLogicSig = _chunkGRBEXEIPjs.getReferrerLogicSig; exports.prepareClaimReferrerFees = _chunkGRBEXEIPjs.prepareClaimReferrerFees; exports.prepareEnableAssetToBeSwapped = _chunkBVY7JBOWjs.prepareEnableAssetToBeSwapped; exports.prepareReferrerOptIntoAsset = _chunkGRBEXEIPjs.prepareReferrerOptIntoAsset; exports.routerABIContract = _chunkWKV4G7E6js.routerABIContract;
41
+ exports.FolksRouterClient = _chunkVPHDL2GPjs.FolksRouterClient; exports.MainnetFolksRouterAppId = _chunkWSXBJBEUjs.MainnetFolksRouterAppId; exports.Network = _chunkMEC4OKESjs.Network; exports.SwapMode = _chunkMEC4OKESjs.SwapMode; exports.TestnetFolksRouterAppId = _chunkIVNVWRCMjs.TestnetFolksRouterAppId; exports.checkSwapTransactions = _chunk35AIBYIPjs.checkSwapTransactions; exports.getReferrerLogicSig = _chunkKLU7UE4Djs.getReferrerLogicSig; exports.prepareClaimReferrerFees = _chunkKLU7UE4Djs.prepareClaimReferrerFees; exports.prepareEnableAssetToBeSwapped = _chunkZVM64SDRjs.prepareEnableAssetToBeSwapped; exports.prepareReferrerOptIntoAsset = _chunkKLU7UE4Djs.prepareReferrerOptIntoAsset; exports.routerABIContract = _chunkWKV4G7E6js.routerABIContract;
42
42
  //# sourceMappingURL=index.js.map
package/dist/index.mjs CHANGED
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  FolksRouterClient
3
- } from "./chunk-WPZIOEUM.mjs";
3
+ } from "./chunk-YPK7GFUE.mjs";
4
4
  import {
5
5
  checkSwapTransactions
6
- } from "./chunk-DHU34JLH.mjs";
6
+ } from "./chunk-B3QVYTBC.mjs";
7
7
  import {
8
8
  MainnetFolksRouterAppId
9
9
  } from "./chunk-VGT24JDM.mjs";
@@ -14,15 +14,15 @@ import {
14
14
  getReferrerLogicSig,
15
15
  prepareClaimReferrerFees,
16
16
  prepareReferrerOptIntoAsset
17
- } from "./chunk-GQO2R6ON.mjs";
17
+ } from "./chunk-ODZGUTBU.mjs";
18
18
  import {
19
19
  prepareEnableAssetToBeSwapped
20
- } from "./chunk-GWQ2U3UO.mjs";
20
+ } from "./chunk-NT3M7HTQ.mjs";
21
21
  import {
22
22
  Network,
23
23
  SwapMode
24
24
  } from "./chunk-CV77XZT3.mjs";
25
- import "./chunk-LE66KKNU.mjs";
25
+ import "./chunk-JUBOHIQC.mjs";
26
26
  import {
27
27
  routerABIContract
28
28
  } from "./chunk-EYGQH356.mjs";
package/dist/referrer.js CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkGRBEXEIPjs = require('./chunk-GRBEXEIP.js');
6
- require('./chunk-GTEUZNDL.js');
5
+ var _chunkKLU7UE4Djs = require('./chunk-KLU7UE4D.js');
6
+ require('./chunk-OM7CUUOV.js');
7
7
 
8
8
 
9
9
 
10
10
 
11
- exports.getReferrerLogicSig = _chunkGRBEXEIPjs.getReferrerLogicSig; exports.prepareClaimReferrerFees = _chunkGRBEXEIPjs.prepareClaimReferrerFees; exports.prepareReferrerOptIntoAsset = _chunkGRBEXEIPjs.prepareReferrerOptIntoAsset;
11
+ exports.getReferrerLogicSig = _chunkKLU7UE4Djs.getReferrerLogicSig; exports.prepareClaimReferrerFees = _chunkKLU7UE4Djs.prepareClaimReferrerFees; exports.prepareReferrerOptIntoAsset = _chunkKLU7UE4Djs.prepareReferrerOptIntoAsset;
12
12
  //# sourceMappingURL=referrer.js.map
package/dist/referrer.mjs CHANGED
@@ -2,8 +2,8 @@ import {
2
2
  getReferrerLogicSig,
3
3
  prepareClaimReferrerFees,
4
4
  prepareReferrerOptIntoAsset
5
- } from "./chunk-GQO2R6ON.mjs";
6
- import "./chunk-LE66KKNU.mjs";
5
+ } from "./chunk-ODZGUTBU.mjs";
6
+ import "./chunk-JUBOHIQC.mjs";
7
7
  export {
8
8
  getReferrerLogicSig,
9
9
  prepareClaimReferrerFees,
package/dist/swap.js CHANGED
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkBVY7JBOWjs = require('./chunk-BVY7JBOW.js');
4
- require('./chunk-GTEUZNDL.js');
3
+ var _chunkZVM64SDRjs = require('./chunk-ZVM64SDR.js');
4
+ require('./chunk-OM7CUUOV.js');
5
5
  require('./chunk-WKV4G7E6.js');
6
6
 
7
7
 
8
- exports.prepareEnableAssetToBeSwapped = _chunkBVY7JBOWjs.prepareEnableAssetToBeSwapped;
8
+ exports.prepareEnableAssetToBeSwapped = _chunkZVM64SDRjs.prepareEnableAssetToBeSwapped;
9
9
  //# sourceMappingURL=swap.js.map
package/dist/swap.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  prepareEnableAssetToBeSwapped
3
- } from "./chunk-GWQ2U3UO.mjs";
4
- import "./chunk-LE66KKNU.mjs";
3
+ } from "./chunk-NT3M7HTQ.mjs";
4
+ import "./chunk-JUBOHIQC.mjs";
5
5
  import "./chunk-EYGQH356.mjs";
6
6
  export {
7
7
  prepareEnableAssetToBeSwapped
package/dist/utils.d.mts CHANGED
@@ -4,7 +4,7 @@ declare const signer: () => Promise<never[]>;
4
4
  /**
5
5
  * Transfer algo or asset. 0 assetId indicates algo transfer, else asset transfer.
6
6
  */
7
- declare function transferAlgoOrAsset(assetId: number, from: string, to: string, amount: number | bigint, params: SuggestedParams): Transaction;
7
+ declare function transferAlgoOrAsset(assetId: number, sender: string, receiver: string, amount: number | bigint, params: SuggestedParams): Transaction;
8
8
  declare const ONE_4_DP: bigint;
9
9
  declare function mulScale(n1: bigint, n2: bigint, scale: bigint): bigint;
10
10
 
package/dist/utils.d.ts CHANGED
@@ -4,7 +4,7 @@ declare const signer: () => Promise<never[]>;
4
4
  /**
5
5
  * Transfer algo or asset. 0 assetId indicates algo transfer, else asset transfer.
6
6
  */
7
- declare function transferAlgoOrAsset(assetId: number, from: string, to: string, amount: number | bigint, params: SuggestedParams): Transaction;
7
+ declare function transferAlgoOrAsset(assetId: number, sender: string, receiver: string, amount: number | bigint, params: SuggestedParams): Transaction;
8
8
  declare const ONE_4_DP: bigint;
9
9
  declare function mulScale(n1: bigint, n2: bigint, scale: bigint): bigint;
10
10
 
package/dist/utils.js CHANGED
@@ -3,11 +3,11 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkGTEUZNDLjs = require('./chunk-GTEUZNDL.js');
6
+ var _chunkOM7CUUOVjs = require('./chunk-OM7CUUOV.js');
7
7
 
8
8
 
9
9
 
10
10
 
11
11
 
12
- exports.ONE_4_DP = _chunkGTEUZNDLjs.ONE_4_DP; exports.mulScale = _chunkGTEUZNDLjs.mulScale; exports.signer = _chunkGTEUZNDLjs.signer; exports.transferAlgoOrAsset = _chunkGTEUZNDLjs.transferAlgoOrAsset;
12
+ exports.ONE_4_DP = _chunkOM7CUUOVjs.ONE_4_DP; exports.mulScale = _chunkOM7CUUOVjs.mulScale; exports.signer = _chunkOM7CUUOVjs.signer; exports.transferAlgoOrAsset = _chunkOM7CUUOVjs.transferAlgoOrAsset;
13
13
  //# sourceMappingURL=utils.js.map
package/dist/utils.mjs CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  mulScale,
4
4
  signer,
5
5
  transferAlgoOrAsset
6
- } from "./chunk-LE66KKNU.mjs";
6
+ } from "./chunk-JUBOHIQC.mjs";
7
7
  export {
8
8
  ONE_4_DP,
9
9
  mulScale,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@folks-router/js-sdk",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",
@@ -31,7 +31,7 @@
31
31
  "Algorand"
32
32
  ],
33
33
  "dependencies": {
34
- "algosdk": "^2.9.0",
34
+ "algosdk": "^3.5.2",
35
35
  "axios": "^1.11.0"
36
36
  },
37
37
  "devDependencies": {
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/referrer.ts"],"sourcesContent":["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"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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 +0,0 @@
1
- {"version":3,"sources":["../src/swap.ts"],"sourcesContent":["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"],"mappings":";;;;;;;;;AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAIP,SAAS,8BACP,OACA,YACA,UACA,QACe;AAEf,QAAM,SAAS,SAAS,SAAS;AACjC,QAAM,aAAa,oBAAoB,GAAG,YAAY,sBAAsB,KAAK,GAAG,QAAQ,MAAM;AAGlG,QAAM,MAAM,IAAI,0BAA0B;AAC1C,MAAI,cAAc;AAAA,IAChB,QAAQ;AAAA,IACR;AAAA,IACA,OAAO;AAAA,IACP,QAAQ,gBAAgB,kBAAkB,SAAS,iBAAiB;AAAA,IACpE,YAAY,CAAC,QAAQ;AAAA,IACrB,kBAAkB;AAAA,IAClB,iBAAiB,EAAE,GAAG,QAAQ,MAAM,IAAI,SAAS,UAAU,IAAK;AAAA,EAClE,CAAC;AACD,QAAM,OAAO,IAAI,WAAW,EAAE,IAAI,CAAC,EAAE,IAAI,MAAM;AAC7C,QAAI,QAAQ;AACZ,WAAO;AAAA,EACT,CAAC;AACD,SAAO,cAAc,CAAC,YAAY,KAAK,CAAC,CAAE,CAAC;AAC7C;","names":[]}
@@ -1 +0,0 @@
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,74 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/chunk-SADXHAXY.js","../src/checks.ts"],"names":[],"mappings":"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","file":"/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/chunk-SADXHAXY.js","sourcesContent":[null,"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"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/chunk-V4ANJGMA.js","../src/FolksRouterClient.ts"],"names":[],"mappings":"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","file":"/home/runner/work/folks-router/folks-router/packages/folks-router-js-sdk/dist/chunk-V4ANJGMA.js","sourcesContent":[null,"import {\n ABIType,\n decodeAddress,\n decodeUnsignedTransaction,\n encodeAddress,\n getApplicationAddress,\n OnApplicationComplete,\n Transaction,\n TransactionType,\n} from \"algosdk\";\nimport axios, { AxiosInstance } from \"axios\";\nimport { MainnetFolksRouterAppId } from \"./constants/mainnetConstants\";\nimport { TestnetFolksRouterAppId } from \"./constants/testnetConstants\";\nimport { Network, SwapMode, SwapParams, SwapQuote, SwapTransactions } from \"./types\";\nimport { routerABIContract } from \"./abiContracts\";\nimport { mulScale, ONE_4_DP } from \"./utils\";\nimport {checkSwapTransactions} from \"./checks\";\n\nconst BASE_URL = \"https://api.folksrouter.io\";\n\nexport class FolksRouterClient {\n private readonly network: Network;\n private readonly api: AxiosInstance;\n\n constructor(network: Network, apiKey?: string) {\n // construct url\n let url = BASE_URL;\n if (network === Network.TESTNET) url += \"/testnet\";\n url += \"/v2\";\n if (apiKey !== undefined) {\n url += \"/pro\";\n }\n\n // set\n this.network = network;\n this.api = axios.create({ baseURL: url, headers: { \"x-api-key\": apiKey } });\n }\n\n public async fetchUserDiscount(userAddress: string): Promise<number> {\n const { data } = await this.api.get(\"/fetch/discount\", {\n params: {\n network: this.network,\n userAddress,\n },\n });\n if (!data.success) throw Error(data.errors);\n\n return data.result;\n }\n\n public async fetchSwapQuote(\n params: SwapParams,\n maxGroupSize?: number,\n feeBps?: number | bigint,\n userFeeDiscount?: number | bigint,\n referrer?: string,\n ): Promise<SwapQuote> {\n const { fromAssetId, toAssetId, amount, swapMode } = params;\n\n const { data } = await this.api.get(\"/fetch/quote\", {\n params: {\n network: this.network,\n fromAsset: fromAssetId,\n toAsset: toAssetId,\n amount,\n type: swapMode,\n maxGroupSize,\n feeBps,\n userFeeDiscount,\n referrer,\n },\n });\n if (!data.success) throw Error(data.errors);\n\n const { quoteAmount, priceImpact, microalgoTxnsFee, txnPayload } = data.result;\n\n return {\n quoteAmount: BigInt(quoteAmount),\n priceImpact,\n microalgoTxnsFee,\n txnPayload,\n };\n }\n\n public async prepareSwapTransactions(\n params: SwapParams,\n userAddress: string,\n slippageBps: number | bigint,\n swapQuote: SwapQuote,\n ): Promise<SwapTransactions> {\n // fetch transactions\n const { data } = await this.api.get(\"/prepare/swap\", {\n params: {\n userAddress,\n slippageBps,\n txnPayload: swapQuote.txnPayload,\n },\n });\n if (!data.success) throw Error(data.errors);\n\n // check transactions\n const unsignedTxns: Transaction[] = data.result.map((txn: string) =>\n decodeUnsignedTransaction(Buffer.from(txn, \"base64\")),\n );\n checkSwapTransactions(this.network, unsignedTxns, params, userAddress, slippageBps, swapQuote);\n\n // return\n return data.result;\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/FolksRouterClient.ts"],"sourcesContent":["import {\n ABIType,\n decodeAddress,\n decodeUnsignedTransaction,\n encodeAddress,\n getApplicationAddress,\n OnApplicationComplete,\n Transaction,\n TransactionType,\n} from \"algosdk\";\nimport axios, { AxiosInstance } from \"axios\";\nimport { MainnetFolksRouterAppId } from \"./constants/mainnetConstants\";\nimport { TestnetFolksRouterAppId } from \"./constants/testnetConstants\";\nimport { Network, SwapMode, SwapParams, SwapQuote, SwapTransactions } from \"./types\";\nimport { routerABIContract } from \"./abiContracts\";\nimport { mulScale, ONE_4_DP } from \"./utils\";\nimport {checkSwapTransactions} from \"./checks\";\n\nconst BASE_URL = \"https://api.folksrouter.io\";\n\nexport class FolksRouterClient {\n private readonly network: Network;\n private readonly api: AxiosInstance;\n\n constructor(network: Network, apiKey?: string) {\n // construct url\n let url = BASE_URL;\n if (network === Network.TESTNET) url += \"/testnet\";\n url += \"/v2\";\n if (apiKey !== undefined) {\n url += \"/pro\";\n }\n\n // set\n this.network = network;\n this.api = axios.create({ baseURL: url, headers: { \"x-api-key\": apiKey } });\n }\n\n public async fetchUserDiscount(userAddress: string): Promise<number> {\n const { data } = await this.api.get(\"/fetch/discount\", {\n params: {\n network: this.network,\n userAddress,\n },\n });\n if (!data.success) throw Error(data.errors);\n\n return data.result;\n }\n\n public async fetchSwapQuote(\n params: SwapParams,\n maxGroupSize?: number,\n feeBps?: number | bigint,\n userFeeDiscount?: number | bigint,\n referrer?: string,\n ): Promise<SwapQuote> {\n const { fromAssetId, toAssetId, amount, swapMode } = params;\n\n const { data } = await this.api.get(\"/fetch/quote\", {\n params: {\n network: this.network,\n fromAsset: fromAssetId,\n toAsset: toAssetId,\n amount,\n type: swapMode,\n maxGroupSize,\n feeBps,\n userFeeDiscount,\n referrer,\n },\n });\n if (!data.success) throw Error(data.errors);\n\n const { quoteAmount, priceImpact, microalgoTxnsFee, txnPayload } = data.result;\n\n return {\n quoteAmount: BigInt(quoteAmount),\n priceImpact,\n microalgoTxnsFee,\n txnPayload,\n };\n }\n\n public async prepareSwapTransactions(\n params: SwapParams,\n userAddress: string,\n slippageBps: number | bigint,\n swapQuote: SwapQuote,\n ): Promise<SwapTransactions> {\n // fetch transactions\n const { data } = await this.api.get(\"/prepare/swap\", {\n params: {\n userAddress,\n slippageBps,\n txnPayload: swapQuote.txnPayload,\n },\n });\n if (!data.success) throw Error(data.errors);\n\n // check transactions\n const unsignedTxns: Transaction[] = data.result.map((txn: string) =>\n decodeUnsignedTransaction(Buffer.from(txn, \"base64\")),\n );\n checkSwapTransactions(this.network, unsignedTxns, params, userAddress, slippageBps, swapQuote);\n\n // return\n return data.result;\n }\n}\n"],"mappings":";;;;;AAAA;AAAA,EAGE;AAAA,OAMK;AACP,OAAO,WAA8B;AAQrC,IAAM,WAAW;AAEV,IAAM,oBAAN,MAAwB;AAAA,EAI7B,YAAY,SAAkB,QAAiB;AAE7C,QAAI,MAAM;AACV,QAAI,oCAA6B,QAAO;AACxC,WAAO;AACP,QAAI,WAAW,QAAW;AACxB,aAAO;AAAA,IACT;AAGA,SAAK,UAAU;AACf,SAAK,MAAM,MAAM,OAAO,EAAE,SAAS,KAAK,SAAS,EAAE,aAAa,OAAO,EAAE,CAAC;AAAA,EAC5E;AAAA,EAEA,MAAa,kBAAkB,aAAsC;AACnE,UAAM,EAAE,KAAK,IAAI,MAAM,KAAK,IAAI,IAAI,mBAAmB;AAAA,MACrD,QAAQ;AAAA,QACN,SAAS,KAAK;AAAA,QACd;AAAA,MACF;AAAA,IACF,CAAC;AACD,QAAI,CAAC,KAAK,QAAS,OAAM,MAAM,KAAK,MAAM;AAE1C,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAa,eACX,QACA,cACA,QACA,iBACA,UACoB;AACpB,UAAM,EAAE,aAAa,WAAW,QAAQ,SAAS,IAAI;AAErD,UAAM,EAAE,KAAK,IAAI,MAAM,KAAK,IAAI,IAAI,gBAAgB;AAAA,MAClD,QAAQ;AAAA,QACN,SAAS,KAAK;AAAA,QACd,WAAW;AAAA,QACX,SAAS;AAAA,QACT;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,CAAC;AACD,QAAI,CAAC,KAAK,QAAS,OAAM,MAAM,KAAK,MAAM;AAE1C,UAAM,EAAE,aAAa,aAAa,kBAAkB,WAAW,IAAI,KAAK;AAExE,WAAO;AAAA,MACL,aAAa,OAAO,WAAW;AAAA,MAC/B;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAa,wBACX,QACA,aACA,aACA,WAC2B;AAE3B,UAAM,EAAE,KAAK,IAAI,MAAM,KAAK,IAAI,IAAI,iBAAiB;AAAA,MACnD,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA,YAAY,UAAU;AAAA,MACxB;AAAA,IACF,CAAC;AACD,QAAI,CAAC,KAAK,QAAS,OAAM,MAAM,KAAK,MAAM;AAG1C,UAAM,eAA8B,KAAK,OAAO;AAAA,MAAI,CAAC,QACnD,0BAA0B,OAAO,KAAK,KAAK,QAAQ,CAAC;AAAA,IACtD;AACA,0BAAsB,KAAK,SAAS,cAAc,QAAQ,aAAa,aAAa,SAAS;AAG7F,WAAO,KAAK;AAAA,EACd;AACF;","names":[]}