@folks-router/js-sdk 0.0.5 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/FolksRouterClient.d.mts +3 -3
- package/dist/FolksRouterClient.d.ts +3 -3
- package/dist/FolksRouterClient.js +7 -3
- package/dist/FolksRouterClient.mjs +6 -2
- package/dist/abiContracts/index.js +2 -2
- package/dist/abiContracts/index.mjs +1 -1
- package/dist/{chunk-S2SNZROA.mjs → chunk-275BCIHG.mjs} +5 -1
- package/dist/chunk-275BCIHG.mjs.map +1 -0
- package/dist/{chunk-ZTQMUDZG.mjs → chunk-CV77XZT3.mjs} +1 -1
- package/dist/chunk-CV77XZT3.mjs.map +1 -0
- package/dist/{chunk-6756PQ2I.mjs → chunk-FEVMPFNU.mjs} +2 -2
- package/dist/chunk-FEVMPFNU.mjs.map +1 -0
- package/dist/{chunk-5KRFY72J.js → chunk-HEZCGFMA.js} +8 -2
- package/dist/chunk-HEZCGFMA.js.map +1 -0
- package/dist/{chunk-VT2DNZR6.js → chunk-J5OA3X2H.js} +5 -1
- package/dist/chunk-J5OA3X2H.js.map +1 -0
- package/dist/{chunk-3LWHLTYR.js → chunk-MEC4OKES.js} +1 -1
- package/dist/{chunk-3LWHLTYR.js.map → chunk-MEC4OKES.js.map} +1 -1
- package/dist/{chunk-UBG6SOYP.js → chunk-PT53HHNS.js} +6 -6
- package/dist/chunk-PT53HHNS.js.map +1 -0
- package/dist/{chunk-PFXLGIPX.js → chunk-QLPM3CZI.js} +6 -6
- package/dist/chunk-QLPM3CZI.js.map +1 -0
- package/dist/chunk-RZM7QCKO.js +129 -0
- package/dist/chunk-RZM7QCKO.js.map +1 -0
- package/dist/{chunk-BDETNMUS.mjs → chunk-SAI2MUH2.mjs} +3 -3
- package/dist/chunk-SAI2MUH2.mjs.map +1 -0
- package/dist/chunk-TJ3TZXQC.mjs +129 -0
- package/dist/chunk-TJ3TZXQC.mjs.map +1 -0
- package/dist/{chunk-3SISBSYJ.mjs → chunk-UBBN3ZYC.mjs} +8 -2
- package/dist/chunk-UBBN3ZYC.mjs.map +1 -0
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +8 -8
- package/dist/index.mjs +8 -8
- package/dist/referrer.js +3 -3
- package/dist/referrer.mjs +2 -2
- package/dist/swap.js +4 -4
- package/dist/swap.mjs +3 -3
- package/dist/types.d.mts +7 -1
- package/dist/types.d.ts +7 -1
- package/dist/types.js +2 -2
- package/dist/types.mjs +1 -1
- package/dist/utils.d.mts +3 -1
- package/dist/utils.d.ts +3 -1
- package/dist/utils.js +6 -2
- package/dist/utils.mjs +5 -1
- package/package.json +1 -1
- package/dist/chunk-3SISBSYJ.mjs.map +0 -1
- package/dist/chunk-5KRFY72J.js.map +0 -1
- package/dist/chunk-6756PQ2I.mjs.map +0 -1
- package/dist/chunk-BDETNMUS.mjs.map +0 -1
- package/dist/chunk-BG4SYX7Y.js +0 -56
- package/dist/chunk-BG4SYX7Y.js.map +0 -1
- package/dist/chunk-PFXLGIPX.js.map +0 -1
- package/dist/chunk-S2SNZROA.mjs.map +0 -1
- package/dist/chunk-UBG6SOYP.js.map +0 -1
- package/dist/chunk-VT2DNZR6.js.map +0 -1
- package/dist/chunk-ZDVIQZ3R.mjs +0 -56
- package/dist/chunk-ZDVIQZ3R.mjs.map +0 -1
- package/dist/chunk-ZTQMUDZG.mjs.map +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Network,
|
|
1
|
+
import { Network, SwapParams, SwapQuote, SwapTransactions } from './types.mjs';
|
|
2
2
|
|
|
3
3
|
declare class FolksRouterClient {
|
|
4
4
|
private readonly network;
|
|
5
5
|
private readonly api;
|
|
6
6
|
constructor(network: Network, apiKey?: string);
|
|
7
|
-
fetchSwapQuote(
|
|
8
|
-
prepareSwapTransactions(userAddress: string, slippageBps: number | bigint, swapQuote: SwapQuote): Promise<SwapTransactions>;
|
|
7
|
+
fetchSwapQuote(params: SwapParams, maxGroupSize?: number, feeBps?: number | bigint, referrer?: string): Promise<SwapQuote>;
|
|
8
|
+
prepareSwapTransactions(params: SwapParams, userAddress: string, slippageBps: number | bigint, swapQuote: SwapQuote): Promise<SwapTransactions>;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
export { FolksRouterClient };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Network,
|
|
1
|
+
import { Network, SwapParams, SwapQuote, SwapTransactions } from './types.js';
|
|
2
2
|
|
|
3
3
|
declare class FolksRouterClient {
|
|
4
4
|
private readonly network;
|
|
5
5
|
private readonly api;
|
|
6
6
|
constructor(network: Network, apiKey?: string);
|
|
7
|
-
fetchSwapQuote(
|
|
8
|
-
prepareSwapTransactions(userAddress: string, slippageBps: number | bigint, swapQuote: SwapQuote): Promise<SwapTransactions>;
|
|
7
|
+
fetchSwapQuote(params: SwapParams, maxGroupSize?: number, feeBps?: number | bigint, referrer?: string): Promise<SwapQuote>;
|
|
8
|
+
prepareSwapTransactions(params: SwapParams, userAddress: string, slippageBps: number | bigint, swapQuote: SwapQuote): Promise<SwapTransactions>;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
export { FolksRouterClient };
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('./chunk-
|
|
3
|
+
var _chunkRZM7QCKOjs = require('./chunk-RZM7QCKO.js');
|
|
4
|
+
require('./chunk-T37SGVC7.js');
|
|
5
|
+
require('./chunk-MEC4OKES.js');
|
|
6
|
+
require('./chunk-HEZCGFMA.js');
|
|
7
|
+
require('./chunk-J5OA3X2H.js');
|
|
8
|
+
require('./chunk-XVPB7BHI.js');
|
|
5
9
|
|
|
6
10
|
|
|
7
|
-
exports.FolksRouterClient =
|
|
11
|
+
exports.FolksRouterClient = _chunkRZM7QCKOjs.FolksRouterClient;
|
|
8
12
|
//# sourceMappingURL=FolksRouterClient.js.map
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
FolksRouterClient
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-TJ3TZXQC.mjs";
|
|
4
|
+
import "./chunk-P22I3FWL.mjs";
|
|
5
|
+
import "./chunk-CV77XZT3.mjs";
|
|
6
|
+
import "./chunk-UBBN3ZYC.mjs";
|
|
7
|
+
import "./chunk-275BCIHG.mjs";
|
|
8
|
+
import "./chunk-Z537KBSF.mjs";
|
|
5
9
|
export {
|
|
6
10
|
FolksRouterClient
|
|
7
11
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkJ5OA3X2Hjs = require('../chunk-J5OA3X2H.js');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
exports.routerABIContract =
|
|
6
|
+
exports.routerABIContract = _chunkJ5OA3X2Hjs.routerABIContract;
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -32,6 +32,10 @@ var router_default = {
|
|
|
32
32
|
type: "uint64",
|
|
33
33
|
name: "percent_input_asset"
|
|
34
34
|
},
|
|
35
|
+
{
|
|
36
|
+
type: "uint64",
|
|
37
|
+
name: "increase_budget"
|
|
38
|
+
},
|
|
35
39
|
{
|
|
36
40
|
type: "(uint64,bool,uint64,uint64,uint64,address,uint64,uint64,address,address,uint64,uint64)[]",
|
|
37
41
|
name: "forward_path"
|
|
@@ -103,4 +107,4 @@ var routerABIContract = new ABIContract(router_default);
|
|
|
103
107
|
export {
|
|
104
108
|
routerABIContract
|
|
105
109
|
};
|
|
106
|
-
//# sourceMappingURL=chunk-
|
|
110
|
+
//# sourceMappingURL=chunk-275BCIHG.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/abiContracts/index.ts","../src/abiContracts/router.json"],"sourcesContent":["import { ABIContract } from \"algosdk\";\nimport routerABI from \"./router.json\";\n\nexport const routerABIContract = new ABIContract(routerABI);\n","{\n \"name\": \"router\",\n \"methods\": [\n {\n \"name\": \"opt_into_assets\",\n \"args\": [\n {\n \"type\": \"uint64[]\",\n \"name\": \"opt_in_assets\"\n }\n ],\n \"returns\": {\n \"type\": \"void\"\n }\n },\n {\n \"name\": \"swap_forward\",\n \"args\": [\n {\n \"type\": \"uint64\",\n \"name\": \"end_swap_txn_offset_index\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"input_asset_id\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"percent_input_asset\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"increase_budget\"\n },\n {\n \"type\": \"(uint64,bool,uint64,uint64,uint64,address,uint64,uint64,address,address,uint64,uint64)[]\",\n \"name\": \"forward_path\"\n }\n ],\n \"returns\": {\n \"type\": \"void\"\n }\n },\n {\n \"name\": \"fi_end_swap\",\n \"args\": [\n {\n \"type\": \"uint64\",\n \"name\": \"output_asset_id\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"min_received\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"fee\"\n },\n {\n \"type\": \"address\",\n \"name\": \"referrer\"\n }\n ],\n \"returns\": {\n \"type\": \"void\"\n }\n },\n {\n \"name\": \"fo_end_swap\",\n \"args\": [\n {\n \"type\": \"uint64\",\n \"name\": \"output_asset_id\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"exact_received\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"fee\"\n },\n {\n \"type\": \"address\",\n \"name\": \"referrer\"\n },\n {\n \"type\": \"(uint64,bool,uint64,uint64,uint64,address,uint64,uint64,address,address,uint64,uint64)[]\",\n \"name\": \"excess_path\"\n }\n ],\n \"returns\": {\n \"type\": \"void\"\n }\n }\n ],\n \"networks\": {}\n}\n"],"mappings":";AAAA,SAAS,mBAAmB;;;ACA5B;AAAA,EACE,MAAQ;AAAA,EACR,SAAW;AAAA,IACT;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAY,CAAC;AACf;;;AD9FO,IAAM,oBAAoB,IAAI,YAAY,cAAS;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types.ts"],"sourcesContent":["type ReferrerGroupTransaction = {\n unsignedTxn: Uint8Array;\n lsig?: Uint8Array;\n}[];\n\nenum Network {\n MAINNET = \"mainnet\",\n TESTNET = \"testnet\",\n}\n\nenum SwapMode {\n FIXED_INPUT = \"FIXED_INPUT\",\n FIXED_OUTPUT = \"FIXED_OUTPUT\",\n}\n\ninterface SwapParams {\n fromAssetId: number;\n toAssetId: number;\n amount: number | bigint;\n swapMode: SwapMode;\n}\n\ninterface SwapQuote {\n quoteAmount: bigint;\n priceImpact: number;\n microalgoTxnsFee: number;\n txnPayload: string;\n}\n\ntype SwapTransactions = string[];\n\nexport { ReferrerGroupTransaction, Network, SwapMode, SwapParams, SwapQuote, SwapTransactions };\n"],"mappings":";AAKA,IAAK,UAAL,kBAAKA,aAAL;AACE,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AAFP,SAAAA;AAAA,GAAA;AAKL,IAAK,WAAL,kBAAKC,cAAL;AACE,EAAAA,UAAA,iBAAc;AACd,EAAAA,UAAA,kBAAe;AAFZ,SAAAA;AAAA,GAAA;","names":["Network","SwapMode"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
transferAlgoOrAsset
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-UBBN3ZYC.mjs";
|
|
4
4
|
|
|
5
5
|
// src/referrer.ts
|
|
6
6
|
import {
|
|
@@ -204,4 +204,4 @@ export {
|
|
|
204
204
|
prepareReferrerOptIntoAsset,
|
|
205
205
|
prepareClaimReferrerFees
|
|
206
206
|
};
|
|
207
|
-
//# sourceMappingURL=chunk-
|
|
207
|
+
//# sourceMappingURL=chunk-FEVMPFNU.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.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":[]}
|
|
@@ -7,9 +7,15 @@ var signer = async () => [];
|
|
|
7
7
|
function transferAlgoOrAsset(assetId, from, to, amount, params) {
|
|
8
8
|
return assetId !== 0 ? _algosdk.makeAssetTransferTxnWithSuggestedParams.call(void 0, from, to, void 0, void 0, amount, void 0, assetId, params) : _algosdk.makePaymentTxnWithSuggestedParams.call(void 0, from, to, amount, void 0, void 0, params);
|
|
9
9
|
}
|
|
10
|
+
var ONE_4_DP = BigInt(1e4);
|
|
11
|
+
function mulScale(n1, n2, scale) {
|
|
12
|
+
return n1 * n2 / scale;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
|
|
10
16
|
|
|
11
17
|
|
|
12
18
|
|
|
13
19
|
|
|
14
|
-
exports.signer = signer; exports.transferAlgoOrAsset = transferAlgoOrAsset;
|
|
15
|
-
//# sourceMappingURL=chunk-
|
|
20
|
+
exports.signer = signer; exports.transferAlgoOrAsset = transferAlgoOrAsset; exports.ONE_4_DP = ONE_4_DP; exports.mulScale = mulScale;
|
|
21
|
+
//# sourceMappingURL=chunk-HEZCGFMA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils.ts"],"names":[],"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,wCAAwC,MAAM,IAAI,QAAW,QAAW,QAAQ,QAAW,SAAS,MAAM,IAC1G,kCAAkC,MAAM,IAAI,QAAQ,QAAW,QAAW,MAAM;AACtF;AAEA,IAAM,WAAW,OAAO,GAAG;AAE3B,SAAS,SAAS,IAAY,IAAY,OAAuB;AAC/D,SAAQ,KAAK,KAAM;AACrB","sourcesContent":["import {\n makeAssetTransferTxnWithSuggestedParams,\n makePaymentTxnWithSuggestedParams,\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 ? makeAssetTransferTxnWithSuggestedParams(from, to, undefined, undefined, amount, undefined, assetId, params)\n : makePaymentTxnWithSuggestedParams(from, to, amount, undefined, undefined, 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"]}
|
|
@@ -32,6 +32,10 @@ var router_default = {
|
|
|
32
32
|
type: "uint64",
|
|
33
33
|
name: "percent_input_asset"
|
|
34
34
|
},
|
|
35
|
+
{
|
|
36
|
+
type: "uint64",
|
|
37
|
+
name: "increase_budget"
|
|
38
|
+
},
|
|
35
39
|
{
|
|
36
40
|
type: "(uint64,bool,uint64,uint64,uint64,address,uint64,uint64,address,address,uint64,uint64)[]",
|
|
37
41
|
name: "forward_path"
|
|
@@ -103,4 +107,4 @@ var routerABIContract = new (0, _algosdk.ABIContract)(router_default);
|
|
|
103
107
|
|
|
104
108
|
|
|
105
109
|
exports.routerABIContract = routerABIContract;
|
|
106
|
-
//# sourceMappingURL=chunk-
|
|
110
|
+
//# sourceMappingURL=chunk-J5OA3X2H.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/abiContracts/index.ts","../src/abiContracts/router.json"],"names":[],"mappings":";AAAA,SAAS,mBAAmB;;;ACA5B;AAAA,EACE,MAAQ;AAAA,EACR,SAAW;AAAA,IACT;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAY,CAAC;AACf;;;AD9FO,IAAM,oBAAoB,IAAI,YAAY,cAAS","sourcesContent":["import { ABIContract } from \"algosdk\";\nimport routerABI from \"./router.json\";\n\nexport const routerABIContract = new ABIContract(routerABI);\n","{\n \"name\": \"router\",\n \"methods\": [\n {\n \"name\": \"opt_into_assets\",\n \"args\": [\n {\n \"type\": \"uint64[]\",\n \"name\": \"opt_in_assets\"\n }\n ],\n \"returns\": {\n \"type\": \"void\"\n }\n },\n {\n \"name\": \"swap_forward\",\n \"args\": [\n {\n \"type\": \"uint64\",\n \"name\": \"end_swap_txn_offset_index\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"input_asset_id\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"percent_input_asset\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"increase_budget\"\n },\n {\n \"type\": \"(uint64,bool,uint64,uint64,uint64,address,uint64,uint64,address,address,uint64,uint64)[]\",\n \"name\": \"forward_path\"\n }\n ],\n \"returns\": {\n \"type\": \"void\"\n }\n },\n {\n \"name\": \"fi_end_swap\",\n \"args\": [\n {\n \"type\": \"uint64\",\n \"name\": \"output_asset_id\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"min_received\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"fee\"\n },\n {\n \"type\": \"address\",\n \"name\": \"referrer\"\n }\n ],\n \"returns\": {\n \"type\": \"void\"\n }\n },\n {\n \"name\": \"fo_end_swap\",\n \"args\": [\n {\n \"type\": \"uint64\",\n \"name\": \"output_asset_id\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"exact_received\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"fee\"\n },\n {\n \"type\": \"address\",\n \"name\": \"referrer\"\n },\n {\n \"type\": \"(uint64,bool,uint64,uint64,uint64,address,uint64,uint64,address,address,uint64,uint64)[]\",\n \"name\": \"excess_path\"\n }\n ],\n \"returns\": {\n \"type\": \"void\"\n }\n }\n ],\n \"networks\": {}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types.ts"],"names":["Network","SwapMode"],"mappings":";AAKA,IAAK,UAAL,kBAAKA,aAAL;AACE,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AAFP,SAAAA;AAAA,GAAA;AAKL,IAAK,WAAL,kBAAKC,cAAL;AACE,EAAAA,UAAA,iBAAc;AACd,EAAAA,UAAA,kBAAe;AAFZ,SAAAA;AAAA,GAAA","sourcesContent":["type ReferrerGroupTransaction = {\n unsignedTxn: Uint8Array;\n lsig?: Uint8Array;\n}[];\n\nenum Network {\n MAINNET = \"mainnet\",\n TESTNET = \"testnet\",\n}\n\nenum SwapMode {\n FIXED_INPUT = \"FIXED_INPUT\",\n FIXED_OUTPUT = \"FIXED_OUTPUT\",\n}\n\ninterface SwapQuote {\n quoteAmount: bigint;\n priceImpact: number;\n microalgoTxnsFee: number;\n txnPayload: string;\n}\n\ntype SwapTransactions = string[];\n\nexport { ReferrerGroupTransaction, Network, SwapMode, SwapQuote, SwapTransactions }
|
|
1
|
+
{"version":3,"sources":["../src/types.ts"],"names":["Network","SwapMode"],"mappings":";AAKA,IAAK,UAAL,kBAAKA,aAAL;AACE,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AAFP,SAAAA;AAAA,GAAA;AAKL,IAAK,WAAL,kBAAKC,cAAL;AACE,EAAAA,UAAA,iBAAc;AACd,EAAAA,UAAA,kBAAe;AAFZ,SAAAA;AAAA,GAAA","sourcesContent":["type ReferrerGroupTransaction = {\n unsignedTxn: Uint8Array;\n lsig?: Uint8Array;\n}[];\n\nenum Network {\n MAINNET = \"mainnet\",\n TESTNET = \"testnet\",\n}\n\nenum SwapMode {\n FIXED_INPUT = \"FIXED_INPUT\",\n FIXED_OUTPUT = \"FIXED_OUTPUT\",\n}\n\ninterface SwapParams {\n fromAssetId: number;\n toAssetId: number;\n amount: number | bigint;\n swapMode: SwapMode;\n}\n\ninterface SwapQuote {\n quoteAmount: bigint;\n priceImpact: number;\n microalgoTxnsFee: number;\n txnPayload: string;\n}\n\ntype SwapTransactions = string[];\n\nexport { ReferrerGroupTransaction, Network, SwapMode, SwapParams, SwapQuote, SwapTransactions };\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkHEZCGFMAjs = require('./chunk-HEZCGFMA.js');
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunkJ5OA3X2Hjs = require('./chunk-J5OA3X2H.js');
|
|
8
8
|
|
|
9
9
|
// src/swap.ts
|
|
10
10
|
|
|
@@ -15,13 +15,13 @@ var _chunkVT2DNZR6js = require('./chunk-VT2DNZR6.js');
|
|
|
15
15
|
var _algosdk = require('algosdk');
|
|
16
16
|
function prepareEnableAssetToBeSwapped(appId, senderAddr, assetIds, params) {
|
|
17
17
|
const amount = assetIds.length * 1e5;
|
|
18
|
-
const paymentTxn =
|
|
18
|
+
const paymentTxn = _chunkHEZCGFMAjs.transferAlgoOrAsset.call(void 0, 0, senderAddr, _algosdk.getApplicationAddress.call(void 0, appId), amount, params);
|
|
19
19
|
const atc = new (0, _algosdk.AtomicTransactionComposer)();
|
|
20
20
|
atc.addMethodCall({
|
|
21
21
|
sender: senderAddr,
|
|
22
|
-
signer:
|
|
22
|
+
signer: _chunkHEZCGFMAjs.signer,
|
|
23
23
|
appID: appId,
|
|
24
|
-
method: _algosdk.getMethodByName.call(void 0,
|
|
24
|
+
method: _algosdk.getMethodByName.call(void 0, _chunkJ5OA3X2Hjs.routerABIContract.methods, "opt_into_assets"),
|
|
25
25
|
methodArgs: [assetIds],
|
|
26
26
|
appForeignAssets: assetIds,
|
|
27
27
|
suggestedParams: { ...params, fee: (1 + assetIds.length) * 1e3 }
|
|
@@ -36,4 +36,4 @@ function prepareEnableAssetToBeSwapped(appId, senderAddr, assetIds, params) {
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
exports.prepareEnableAssetToBeSwapped = prepareEnableAssetToBeSwapped;
|
|
39
|
-
//# sourceMappingURL=chunk-
|
|
39
|
+
//# sourceMappingURL=chunk-PT53HHNS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/swap.ts"],"names":[],"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","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"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkHEZCGFMAjs = require('./chunk-HEZCGFMA.js');
|
|
4
4
|
|
|
5
5
|
// src/referrer.ts
|
|
6
6
|
|
|
@@ -188,14 +188,14 @@ var buildReferrerGroupTransaction = (txns, lsig) => _algosdk.assignGroupID.call(
|
|
|
188
188
|
function prepareReferrerOptIntoAsset(senderAddr, referrerAddr, assetId, params) {
|
|
189
189
|
const lsig = getReferrerLogicSig(referrerAddr);
|
|
190
190
|
const MIN_BALANCE = BigInt(1e5);
|
|
191
|
-
const minBalancePayment =
|
|
192
|
-
const assetOptIn =
|
|
191
|
+
const minBalancePayment = _chunkHEZCGFMAjs.transferAlgoOrAsset.call(void 0, 0, senderAddr, lsig.address(), MIN_BALANCE, { ...params, fee: 2e3 });
|
|
192
|
+
const assetOptIn = _chunkHEZCGFMAjs.transferAlgoOrAsset.call(void 0, assetId, lsig.address(), lsig.address(), 0, { ...params, fee: 0 });
|
|
193
193
|
return buildReferrerGroupTransaction([minBalancePayment, assetOptIn], lsig);
|
|
194
194
|
}
|
|
195
195
|
function prepareClaimReferrerFees(senderAddr, referrerAddr, assetId, amount, params) {
|
|
196
196
|
const lsig = getReferrerLogicSig(referrerAddr);
|
|
197
|
-
const groupFeePayment =
|
|
198
|
-
const claim =
|
|
197
|
+
const groupFeePayment = _chunkHEZCGFMAjs.transferAlgoOrAsset.call(void 0, 0, senderAddr, senderAddr, 0, { ...params, fee: 2e3 });
|
|
198
|
+
const claim = _chunkHEZCGFMAjs.transferAlgoOrAsset.call(void 0, assetId, lsig.address(), referrerAddr, amount, { ...params, fee: 0 });
|
|
199
199
|
return buildReferrerGroupTransaction([groupFeePayment, claim], lsig);
|
|
200
200
|
}
|
|
201
201
|
|
|
@@ -204,4 +204,4 @@ function prepareClaimReferrerFees(senderAddr, referrerAddr, assetId, amount, par
|
|
|
204
204
|
|
|
205
205
|
|
|
206
206
|
exports.getReferrerLogicSig = getReferrerLogicSig; exports.prepareReferrerOptIntoAsset = prepareReferrerOptIntoAsset; exports.prepareClaimReferrerFees = prepareClaimReferrerFees;
|
|
207
|
-
//# sourceMappingURL=chunk-
|
|
207
|
+
//# sourceMappingURL=chunk-QLPM3CZI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/referrer.ts"],"names":[],"mappings":"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","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"]}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
|
+
|
|
3
|
+
var _chunkT37SGVC7js = require('./chunk-T37SGVC7.js');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkHEZCGFMAjs = require('./chunk-HEZCGFMA.js');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
var _chunkJ5OA3X2Hjs = require('./chunk-J5OA3X2H.js');
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
var _chunkXVPB7BHIjs = require('./chunk-XVPB7BHI.js');
|
|
14
|
+
|
|
15
|
+
// src/FolksRouterClient.ts
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
var _algosdk = require('algosdk');
|
|
24
|
+
var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios);
|
|
25
|
+
var BASE_URL = "https://api.folksrouter.io";
|
|
26
|
+
var FolksRouterClient = class {
|
|
27
|
+
constructor(network, apiKey) {
|
|
28
|
+
let url = BASE_URL;
|
|
29
|
+
if (network === "testnet" /* TESTNET */)
|
|
30
|
+
url += "/testnet";
|
|
31
|
+
url += "/v1";
|
|
32
|
+
if (apiKey !== void 0) {
|
|
33
|
+
url += "/pro";
|
|
34
|
+
}
|
|
35
|
+
this.network = network;
|
|
36
|
+
this.api = _axios2.default.create({ baseURL: url, headers: { "x-api-key": apiKey } });
|
|
37
|
+
}
|
|
38
|
+
async fetchSwapQuote(params, maxGroupSize, feeBps, referrer) {
|
|
39
|
+
const { fromAssetId, toAssetId, amount, swapMode } = params;
|
|
40
|
+
const { data } = await this.api.get("/fetch/quote", {
|
|
41
|
+
params: {
|
|
42
|
+
network: this.network,
|
|
43
|
+
fromAsset: fromAssetId,
|
|
44
|
+
toAsset: toAssetId,
|
|
45
|
+
amount,
|
|
46
|
+
type: swapMode,
|
|
47
|
+
maxGroupSize,
|
|
48
|
+
feeBps,
|
|
49
|
+
referrer
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
if (!data.success)
|
|
53
|
+
throw Error(data.errors);
|
|
54
|
+
const { quoteAmount, priceImpact, microalgoTxnsFee, txnPayload } = data.result;
|
|
55
|
+
return {
|
|
56
|
+
quoteAmount: BigInt(quoteAmount),
|
|
57
|
+
priceImpact,
|
|
58
|
+
microalgoTxnsFee,
|
|
59
|
+
txnPayload
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
async prepareSwapTransactions(params, userAddress, slippageBps, swapQuote) {
|
|
63
|
+
const { fromAssetId, toAssetId, amount, swapMode } = params;
|
|
64
|
+
const { data } = await this.api.get("/prepare/swap", {
|
|
65
|
+
params: {
|
|
66
|
+
userAddress,
|
|
67
|
+
slippageBps,
|
|
68
|
+
txnPayload: swapQuote.txnPayload
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
if (!data.success)
|
|
72
|
+
throw Error(data.errors);
|
|
73
|
+
const unsignedTxns = data.result.map(
|
|
74
|
+
(txn) => _algosdk.decodeUnsignedTransaction.call(void 0, Buffer.from(txn, "base64"))
|
|
75
|
+
);
|
|
76
|
+
const folksRouterAppId = this.network == "mainnet" /* MAINNET */ ? _chunkXVPB7BHIjs.MainnetFolksRouterAppId : _chunkT37SGVC7js.TestnetFolksRouterAppId;
|
|
77
|
+
const folksRouterAddr = _algosdk.getApplicationAddress.call(void 0, folksRouterAppId);
|
|
78
|
+
const getHexSelector = (method) => Buffer.from(_chunkJ5OA3X2Hjs.routerABIContract.getMethodByName(method).getSelector()).toString("hex");
|
|
79
|
+
const uint8ArrayToHex = (uint8Array) => Buffer.from(uint8Array).toString("hex");
|
|
80
|
+
const sendAssetTxn = unsignedTxns[0];
|
|
81
|
+
const swapForwardTxns = unsignedTxns.slice(1, -1);
|
|
82
|
+
const swapEndTxn = unsignedTxns[unsignedTxns.length - 1];
|
|
83
|
+
if (_algosdk.encodeAddress.call(void 0, sendAssetTxn.to.publicKey) !== folksRouterAddr)
|
|
84
|
+
throw Error("Incorrect receiver");
|
|
85
|
+
if (!(fromAssetId === 0 && sendAssetTxn.type == _algosdk.TransactionType.pay) && !(fromAssetId === sendAssetTxn.assetIndex && sendAssetTxn.type === _algosdk.TransactionType.axfer))
|
|
86
|
+
throw Error("Sending incorrect algo/asset");
|
|
87
|
+
const sendAmount = BigInt(sendAssetTxn.amount);
|
|
88
|
+
swapForwardTxns.forEach((txn, i) => {
|
|
89
|
+
if (txn.appIndex !== folksRouterAppId)
|
|
90
|
+
throw Error("Incorrect application index");
|
|
91
|
+
if (txn.type !== _algosdk.TransactionType.appl && txn.appOnComplete !== _algosdk.OnApplicationComplete.NoOpOC)
|
|
92
|
+
throw Error("Incorrect transaction type");
|
|
93
|
+
const swapForwardSelector = uint8ArrayToHex(txn.appArgs.at(0));
|
|
94
|
+
if (swapForwardSelector !== getHexSelector("swap_forward"))
|
|
95
|
+
throw Error("Incorrect selector");
|
|
96
|
+
});
|
|
97
|
+
if (swapEndTxn.appIndex !== folksRouterAppId)
|
|
98
|
+
throw Error("Incorrect application index");
|
|
99
|
+
if (swapEndTxn.type !== _algosdk.TransactionType.appl && swapEndTxn.appOnComplete !== _algosdk.OnApplicationComplete.NoOpOC)
|
|
100
|
+
throw Error("Incorrect transaction type");
|
|
101
|
+
const swapEndSelector = uint8ArrayToHex(swapEndTxn.appArgs.at(0));
|
|
102
|
+
const isFixedInput = swapEndSelector === getHexSelector("fi_end_swap");
|
|
103
|
+
const isFixedOutput = swapEndSelector === getHexSelector("fo_end_swap");
|
|
104
|
+
if (isFixedInput && swapMode !== "FIXED_INPUT" /* FIXED_INPUT */ || isFixedOutput && swapMode !== "FIXED_OUTPUT" /* FIXED_OUTPUT */)
|
|
105
|
+
throw Error("Incorrect swap mode");
|
|
106
|
+
if (_algosdk.ABIType.from("uint64").decode(swapEndTxn.appArgs.at(1)) !== BigInt(toAssetId))
|
|
107
|
+
throw Error("Receiving incorrect algo/asset");
|
|
108
|
+
const receiveAmount = _algosdk.ABIType.from("uint64").decode(swapEndTxn.appArgs.at(2));
|
|
109
|
+
const slippageAmount = _chunkHEZCGFMAjs.mulScale.call(void 0, swapQuote.quoteAmount, BigInt(slippageBps), _chunkHEZCGFMAjs.ONE_4_DP);
|
|
110
|
+
if (isFixedInput) {
|
|
111
|
+
if (amount !== sendAmount)
|
|
112
|
+
throw Error("Sending incorrect fixed input amount");
|
|
113
|
+
if (swapQuote.quoteAmount - slippageAmount !== receiveAmount)
|
|
114
|
+
throw Error("Receiving incorrect fixed input amount");
|
|
115
|
+
}
|
|
116
|
+
if (isFixedOutput) {
|
|
117
|
+
if (swapQuote.quoteAmount + slippageAmount !== sendAmount)
|
|
118
|
+
throw Error("Sending incorrect fixed output amount");
|
|
119
|
+
if (amount !== receiveAmount)
|
|
120
|
+
throw Error("Receiving incorrect fixed output amount");
|
|
121
|
+
}
|
|
122
|
+
return data.result;
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
exports.FolksRouterClient = FolksRouterClient;
|
|
129
|
+
//# sourceMappingURL=chunk-RZM7QCKO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/FolksRouterClient.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ABIType,\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\";\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 += \"/v1\";\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 fetchSwapQuote(\n params: SwapParams,\n maxGroupSize?: number,\n feeBps?: 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 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 const { fromAssetId, toAssetId, amount, swapMode } = params;\n\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 const folksRouterAppId = this.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 (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.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.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)\n 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 // return\n return data.result;\n }\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
signer,
|
|
3
3
|
transferAlgoOrAsset
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-UBBN3ZYC.mjs";
|
|
5
5
|
import {
|
|
6
6
|
routerABIContract
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-275BCIHG.mjs";
|
|
8
8
|
|
|
9
9
|
// src/swap.ts
|
|
10
10
|
import {
|
|
@@ -36,4 +36,4 @@ function prepareEnableAssetToBeSwapped(appId, senderAddr, assetIds, params) {
|
|
|
36
36
|
export {
|
|
37
37
|
prepareEnableAssetToBeSwapped
|
|
38
38
|
};
|
|
39
|
-
//# sourceMappingURL=chunk-
|
|
39
|
+
//# sourceMappingURL=chunk-SAI2MUH2.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), 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":[]}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import {
|
|
2
|
+
TestnetFolksRouterAppId
|
|
3
|
+
} from "./chunk-P22I3FWL.mjs";
|
|
4
|
+
import {
|
|
5
|
+
ONE_4_DP,
|
|
6
|
+
mulScale
|
|
7
|
+
} from "./chunk-UBBN3ZYC.mjs";
|
|
8
|
+
import {
|
|
9
|
+
routerABIContract
|
|
10
|
+
} from "./chunk-275BCIHG.mjs";
|
|
11
|
+
import {
|
|
12
|
+
MainnetFolksRouterAppId
|
|
13
|
+
} from "./chunk-Z537KBSF.mjs";
|
|
14
|
+
|
|
15
|
+
// src/FolksRouterClient.ts
|
|
16
|
+
import {
|
|
17
|
+
ABIType,
|
|
18
|
+
decodeUnsignedTransaction,
|
|
19
|
+
encodeAddress,
|
|
20
|
+
getApplicationAddress,
|
|
21
|
+
OnApplicationComplete,
|
|
22
|
+
TransactionType
|
|
23
|
+
} from "algosdk";
|
|
24
|
+
import axios from "axios";
|
|
25
|
+
var BASE_URL = "https://api.folksrouter.io";
|
|
26
|
+
var FolksRouterClient = class {
|
|
27
|
+
constructor(network, apiKey) {
|
|
28
|
+
let url = BASE_URL;
|
|
29
|
+
if (network === "testnet" /* TESTNET */)
|
|
30
|
+
url += "/testnet";
|
|
31
|
+
url += "/v1";
|
|
32
|
+
if (apiKey !== void 0) {
|
|
33
|
+
url += "/pro";
|
|
34
|
+
}
|
|
35
|
+
this.network = network;
|
|
36
|
+
this.api = axios.create({ baseURL: url, headers: { "x-api-key": apiKey } });
|
|
37
|
+
}
|
|
38
|
+
async fetchSwapQuote(params, maxGroupSize, feeBps, referrer) {
|
|
39
|
+
const { fromAssetId, toAssetId, amount, swapMode } = params;
|
|
40
|
+
const { data } = await this.api.get("/fetch/quote", {
|
|
41
|
+
params: {
|
|
42
|
+
network: this.network,
|
|
43
|
+
fromAsset: fromAssetId,
|
|
44
|
+
toAsset: toAssetId,
|
|
45
|
+
amount,
|
|
46
|
+
type: swapMode,
|
|
47
|
+
maxGroupSize,
|
|
48
|
+
feeBps,
|
|
49
|
+
referrer
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
if (!data.success)
|
|
53
|
+
throw Error(data.errors);
|
|
54
|
+
const { quoteAmount, priceImpact, microalgoTxnsFee, txnPayload } = data.result;
|
|
55
|
+
return {
|
|
56
|
+
quoteAmount: BigInt(quoteAmount),
|
|
57
|
+
priceImpact,
|
|
58
|
+
microalgoTxnsFee,
|
|
59
|
+
txnPayload
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
async prepareSwapTransactions(params, userAddress, slippageBps, swapQuote) {
|
|
63
|
+
const { fromAssetId, toAssetId, amount, swapMode } = params;
|
|
64
|
+
const { data } = await this.api.get("/prepare/swap", {
|
|
65
|
+
params: {
|
|
66
|
+
userAddress,
|
|
67
|
+
slippageBps,
|
|
68
|
+
txnPayload: swapQuote.txnPayload
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
if (!data.success)
|
|
72
|
+
throw Error(data.errors);
|
|
73
|
+
const unsignedTxns = data.result.map(
|
|
74
|
+
(txn) => decodeUnsignedTransaction(Buffer.from(txn, "base64"))
|
|
75
|
+
);
|
|
76
|
+
const folksRouterAppId = this.network == "mainnet" /* MAINNET */ ? MainnetFolksRouterAppId : TestnetFolksRouterAppId;
|
|
77
|
+
const folksRouterAddr = getApplicationAddress(folksRouterAppId);
|
|
78
|
+
const getHexSelector = (method) => Buffer.from(routerABIContract.getMethodByName(method).getSelector()).toString("hex");
|
|
79
|
+
const uint8ArrayToHex = (uint8Array) => Buffer.from(uint8Array).toString("hex");
|
|
80
|
+
const sendAssetTxn = unsignedTxns[0];
|
|
81
|
+
const swapForwardTxns = unsignedTxns.slice(1, -1);
|
|
82
|
+
const swapEndTxn = unsignedTxns[unsignedTxns.length - 1];
|
|
83
|
+
if (encodeAddress(sendAssetTxn.to.publicKey) !== folksRouterAddr)
|
|
84
|
+
throw Error("Incorrect receiver");
|
|
85
|
+
if (!(fromAssetId === 0 && sendAssetTxn.type == TransactionType.pay) && !(fromAssetId === sendAssetTxn.assetIndex && sendAssetTxn.type === TransactionType.axfer))
|
|
86
|
+
throw Error("Sending incorrect algo/asset");
|
|
87
|
+
const sendAmount = BigInt(sendAssetTxn.amount);
|
|
88
|
+
swapForwardTxns.forEach((txn, i) => {
|
|
89
|
+
if (txn.appIndex !== folksRouterAppId)
|
|
90
|
+
throw Error("Incorrect application index");
|
|
91
|
+
if (txn.type !== TransactionType.appl && txn.appOnComplete !== OnApplicationComplete.NoOpOC)
|
|
92
|
+
throw Error("Incorrect transaction type");
|
|
93
|
+
const swapForwardSelector = uint8ArrayToHex(txn.appArgs.at(0));
|
|
94
|
+
if (swapForwardSelector !== getHexSelector("swap_forward"))
|
|
95
|
+
throw Error("Incorrect selector");
|
|
96
|
+
});
|
|
97
|
+
if (swapEndTxn.appIndex !== folksRouterAppId)
|
|
98
|
+
throw Error("Incorrect application index");
|
|
99
|
+
if (swapEndTxn.type !== TransactionType.appl && swapEndTxn.appOnComplete !== OnApplicationComplete.NoOpOC)
|
|
100
|
+
throw Error("Incorrect transaction type");
|
|
101
|
+
const swapEndSelector = uint8ArrayToHex(swapEndTxn.appArgs.at(0));
|
|
102
|
+
const isFixedInput = swapEndSelector === getHexSelector("fi_end_swap");
|
|
103
|
+
const isFixedOutput = swapEndSelector === getHexSelector("fo_end_swap");
|
|
104
|
+
if (isFixedInput && swapMode !== "FIXED_INPUT" /* FIXED_INPUT */ || isFixedOutput && swapMode !== "FIXED_OUTPUT" /* FIXED_OUTPUT */)
|
|
105
|
+
throw Error("Incorrect swap mode");
|
|
106
|
+
if (ABIType.from("uint64").decode(swapEndTxn.appArgs.at(1)) !== BigInt(toAssetId))
|
|
107
|
+
throw Error("Receiving incorrect algo/asset");
|
|
108
|
+
const receiveAmount = ABIType.from("uint64").decode(swapEndTxn.appArgs.at(2));
|
|
109
|
+
const slippageAmount = mulScale(swapQuote.quoteAmount, BigInt(slippageBps), ONE_4_DP);
|
|
110
|
+
if (isFixedInput) {
|
|
111
|
+
if (amount !== sendAmount)
|
|
112
|
+
throw Error("Sending incorrect fixed input amount");
|
|
113
|
+
if (swapQuote.quoteAmount - slippageAmount !== receiveAmount)
|
|
114
|
+
throw Error("Receiving incorrect fixed input amount");
|
|
115
|
+
}
|
|
116
|
+
if (isFixedOutput) {
|
|
117
|
+
if (swapQuote.quoteAmount + slippageAmount !== sendAmount)
|
|
118
|
+
throw Error("Sending incorrect fixed output amount");
|
|
119
|
+
if (amount !== receiveAmount)
|
|
120
|
+
throw Error("Receiving incorrect fixed output amount");
|
|
121
|
+
}
|
|
122
|
+
return data.result;
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
export {
|
|
127
|
+
FolksRouterClient
|
|
128
|
+
};
|
|
129
|
+
//# sourceMappingURL=chunk-TJ3TZXQC.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/FolksRouterClient.ts"],"sourcesContent":["import {\n ABIType,\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\";\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 += \"/v1\";\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 fetchSwapQuote(\n params: SwapParams,\n maxGroupSize?: number,\n feeBps?: 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 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 const { fromAssetId, toAssetId, amount, swapMode } = params;\n\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 const folksRouterAppId = this.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 (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.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.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)\n 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 // return\n return data.result;\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -7,9 +7,15 @@ var signer = async () => [];
|
|
|
7
7
|
function transferAlgoOrAsset(assetId, from, to, amount, params) {
|
|
8
8
|
return assetId !== 0 ? makeAssetTransferTxnWithSuggestedParams(from, to, void 0, void 0, amount, void 0, assetId, params) : makePaymentTxnWithSuggestedParams(from, to, amount, void 0, void 0, params);
|
|
9
9
|
}
|
|
10
|
+
var ONE_4_DP = BigInt(1e4);
|
|
11
|
+
function mulScale(n1, n2, scale) {
|
|
12
|
+
return n1 * n2 / scale;
|
|
13
|
+
}
|
|
10
14
|
|
|
11
15
|
export {
|
|
12
16
|
signer,
|
|
13
|
-
transferAlgoOrAsset
|
|
17
|
+
transferAlgoOrAsset,
|
|
18
|
+
ONE_4_DP,
|
|
19
|
+
mulScale
|
|
14
20
|
};
|
|
15
|
-
//# sourceMappingURL=chunk-
|
|
21
|
+
//# sourceMappingURL=chunk-UBBN3ZYC.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils.ts"],"sourcesContent":["import {\n makeAssetTransferTxnWithSuggestedParams,\n makePaymentTxnWithSuggestedParams,\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 ? makeAssetTransferTxnWithSuggestedParams(from, to, undefined, undefined, amount, undefined, assetId, params)\n : makePaymentTxnWithSuggestedParams(from, to, amount, undefined, undefined, 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,wCAAwC,MAAM,IAAI,QAAW,QAAW,QAAQ,QAAW,SAAS,MAAM,IAC1G,kCAAkC,MAAM,IAAI,QAAQ,QAAW,QAAW,MAAM;AACtF;AAEA,IAAM,WAAW,OAAO,GAAG;AAE3B,SAAS,SAAS,IAAY,IAAY,OAAuB;AAC/D,SAAQ,KAAK,KAAM;AACrB;","names":[]}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { getReferrerLogicSig, prepareClaimReferrerFees, prepareReferrerOptIntoAsset } from './referrer.mjs';
|
|
2
2
|
export { prepareEnableAssetToBeSwapped } from './swap.mjs';
|
|
3
|
-
export { Network, ReferrerGroupTransaction, SwapMode, SwapQuote, SwapTransactions } from './types.mjs';
|
|
3
|
+
export { Network, ReferrerGroupTransaction, SwapMode, SwapParams, SwapQuote, SwapTransactions } from './types.mjs';
|
|
4
4
|
export { routerABIContract } from './abiContracts/index.mjs';
|
|
5
5
|
export { MainnetFolksRouterAppId } from './constants/mainnetConstants.mjs';
|
|
6
6
|
export { TestnetFolksRouterAppId } from './constants/testnetConstants.mjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { getReferrerLogicSig, prepareClaimReferrerFees, prepareReferrerOptIntoAsset } from './referrer.js';
|
|
2
2
|
export { prepareEnableAssetToBeSwapped } from './swap.js';
|
|
3
|
-
export { Network, ReferrerGroupTransaction, SwapMode, SwapQuote, SwapTransactions } from './types.js';
|
|
3
|
+
export { Network, ReferrerGroupTransaction, SwapMode, SwapParams, SwapQuote, SwapTransactions } from './types.js';
|
|
4
4
|
export { routerABIContract } from './abiContracts/index.js';
|
|
5
5
|
export { MainnetFolksRouterAppId } from './constants/mainnetConstants.js';
|
|
6
6
|
export { TestnetFolksRouterAppId } from './constants/testnetConstants.js';
|
package/dist/index.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkRZM7QCKOjs = require('./chunk-RZM7QCKO.js');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkT37SGVC7js = require('./chunk-T37SGVC7.js');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
var
|
|
11
|
+
var _chunkQLPM3CZIjs = require('./chunk-QLPM3CZI.js');
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _chunkPT53HHNSjs = require('./chunk-PT53HHNS.js');
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
var
|
|
19
|
-
require('./chunk-
|
|
18
|
+
var _chunkMEC4OKESjs = require('./chunk-MEC4OKES.js');
|
|
19
|
+
require('./chunk-HEZCGFMA.js');
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _chunkJ5OA3X2Hjs = require('./chunk-J5OA3X2H.js');
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
var _chunkXVPB7BHIjs = require('./chunk-XVPB7BHI.js');
|
|
@@ -34,5 +34,5 @@ var _chunkXVPB7BHIjs = require('./chunk-XVPB7BHI.js');
|
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
|
|
37
|
-
exports.FolksRouterClient =
|
|
37
|
+
exports.FolksRouterClient = _chunkRZM7QCKOjs.FolksRouterClient; exports.MainnetFolksRouterAppId = _chunkXVPB7BHIjs.MainnetFolksRouterAppId; exports.Network = _chunkMEC4OKESjs.Network; exports.SwapMode = _chunkMEC4OKESjs.SwapMode; exports.TestnetFolksRouterAppId = _chunkT37SGVC7js.TestnetFolksRouterAppId; exports.getReferrerLogicSig = _chunkQLPM3CZIjs.getReferrerLogicSig; exports.prepareClaimReferrerFees = _chunkQLPM3CZIjs.prepareClaimReferrerFees; exports.prepareEnableAssetToBeSwapped = _chunkPT53HHNSjs.prepareEnableAssetToBeSwapped; exports.prepareReferrerOptIntoAsset = _chunkQLPM3CZIjs.prepareReferrerOptIntoAsset; exports.routerABIContract = _chunkJ5OA3X2Hjs.routerABIContract;
|
|
38
38
|
//# sourceMappingURL=index.js.map
|
package/dist/index.mjs
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FolksRouterClient
|
|
3
|
+
} from "./chunk-TJ3TZXQC.mjs";
|
|
1
4
|
import {
|
|
2
5
|
TestnetFolksRouterAppId
|
|
3
6
|
} from "./chunk-P22I3FWL.mjs";
|
|
4
|
-
import {
|
|
5
|
-
FolksRouterClient
|
|
6
|
-
} from "./chunk-ZDVIQZ3R.mjs";
|
|
7
7
|
import {
|
|
8
8
|
getReferrerLogicSig,
|
|
9
9
|
prepareClaimReferrerFees,
|
|
10
10
|
prepareReferrerOptIntoAsset
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-FEVMPFNU.mjs";
|
|
12
12
|
import {
|
|
13
13
|
prepareEnableAssetToBeSwapped
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-SAI2MUH2.mjs";
|
|
15
15
|
import {
|
|
16
16
|
Network,
|
|
17
17
|
SwapMode
|
|
18
|
-
} from "./chunk-
|
|
19
|
-
import "./chunk-
|
|
18
|
+
} from "./chunk-CV77XZT3.mjs";
|
|
19
|
+
import "./chunk-UBBN3ZYC.mjs";
|
|
20
20
|
import {
|
|
21
21
|
routerABIContract
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-275BCIHG.mjs";
|
|
23
23
|
import {
|
|
24
24
|
MainnetFolksRouterAppId
|
|
25
25
|
} from "./chunk-Z537KBSF.mjs";
|
package/dist/referrer.js
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
require('./chunk-
|
|
5
|
+
var _chunkQLPM3CZIjs = require('./chunk-QLPM3CZI.js');
|
|
6
|
+
require('./chunk-HEZCGFMA.js');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
exports.getReferrerLogicSig =
|
|
11
|
+
exports.getReferrerLogicSig = _chunkQLPM3CZIjs.getReferrerLogicSig; exports.prepareClaimReferrerFees = _chunkQLPM3CZIjs.prepareClaimReferrerFees; exports.prepareReferrerOptIntoAsset = _chunkQLPM3CZIjs.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-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-FEVMPFNU.mjs";
|
|
6
|
+
import "./chunk-UBBN3ZYC.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
|
|
4
|
-
require('./chunk-
|
|
5
|
-
require('./chunk-
|
|
3
|
+
var _chunkPT53HHNSjs = require('./chunk-PT53HHNS.js');
|
|
4
|
+
require('./chunk-HEZCGFMA.js');
|
|
5
|
+
require('./chunk-J5OA3X2H.js');
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
exports.prepareEnableAssetToBeSwapped =
|
|
8
|
+
exports.prepareEnableAssetToBeSwapped = _chunkPT53HHNSjs.prepareEnableAssetToBeSwapped;
|
|
9
9
|
//# sourceMappingURL=swap.js.map
|
package/dist/swap.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
prepareEnableAssetToBeSwapped
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-SAI2MUH2.mjs";
|
|
4
|
+
import "./chunk-UBBN3ZYC.mjs";
|
|
5
|
+
import "./chunk-275BCIHG.mjs";
|
|
6
6
|
export {
|
|
7
7
|
prepareEnableAssetToBeSwapped
|
|
8
8
|
};
|
package/dist/types.d.mts
CHANGED
|
@@ -10,6 +10,12 @@ declare enum SwapMode {
|
|
|
10
10
|
FIXED_INPUT = "FIXED_INPUT",
|
|
11
11
|
FIXED_OUTPUT = "FIXED_OUTPUT"
|
|
12
12
|
}
|
|
13
|
+
interface SwapParams {
|
|
14
|
+
fromAssetId: number;
|
|
15
|
+
toAssetId: number;
|
|
16
|
+
amount: number | bigint;
|
|
17
|
+
swapMode: SwapMode;
|
|
18
|
+
}
|
|
13
19
|
interface SwapQuote {
|
|
14
20
|
quoteAmount: bigint;
|
|
15
21
|
priceImpact: number;
|
|
@@ -18,4 +24,4 @@ interface SwapQuote {
|
|
|
18
24
|
}
|
|
19
25
|
type SwapTransactions = string[];
|
|
20
26
|
|
|
21
|
-
export { Network, ReferrerGroupTransaction, SwapMode, SwapQuote, SwapTransactions };
|
|
27
|
+
export { Network, ReferrerGroupTransaction, SwapMode, SwapParams, SwapQuote, SwapTransactions };
|
package/dist/types.d.ts
CHANGED
|
@@ -10,6 +10,12 @@ declare enum SwapMode {
|
|
|
10
10
|
FIXED_INPUT = "FIXED_INPUT",
|
|
11
11
|
FIXED_OUTPUT = "FIXED_OUTPUT"
|
|
12
12
|
}
|
|
13
|
+
interface SwapParams {
|
|
14
|
+
fromAssetId: number;
|
|
15
|
+
toAssetId: number;
|
|
16
|
+
amount: number | bigint;
|
|
17
|
+
swapMode: SwapMode;
|
|
18
|
+
}
|
|
13
19
|
interface SwapQuote {
|
|
14
20
|
quoteAmount: bigint;
|
|
15
21
|
priceImpact: number;
|
|
@@ -18,4 +24,4 @@ interface SwapQuote {
|
|
|
18
24
|
}
|
|
19
25
|
type SwapTransactions = string[];
|
|
20
26
|
|
|
21
|
-
export { Network, ReferrerGroupTransaction, SwapMode, SwapQuote, SwapTransactions };
|
|
27
|
+
export { Network, ReferrerGroupTransaction, SwapMode, SwapParams, SwapQuote, SwapTransactions };
|
package/dist/types.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkMEC4OKESjs = require('./chunk-MEC4OKES.js');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
exports.Network =
|
|
8
|
+
exports.Network = _chunkMEC4OKESjs.Network; exports.SwapMode = _chunkMEC4OKESjs.SwapMode;
|
|
9
9
|
//# sourceMappingURL=types.js.map
|
package/dist/types.mjs
CHANGED
package/dist/utils.d.mts
CHANGED
|
@@ -5,5 +5,7 @@ declare const signer: () => Promise<never[]>;
|
|
|
5
5
|
* Transfer algo or asset. 0 assetId indicates algo transfer, else asset transfer.
|
|
6
6
|
*/
|
|
7
7
|
declare function transferAlgoOrAsset(assetId: number, from: string, to: string, amount: number | bigint, params: SuggestedParams): Transaction;
|
|
8
|
+
declare const ONE_4_DP: bigint;
|
|
9
|
+
declare function mulScale(n1: bigint, n2: bigint, scale: bigint): bigint;
|
|
8
10
|
|
|
9
|
-
export { signer, transferAlgoOrAsset };
|
|
11
|
+
export { ONE_4_DP, mulScale, signer, transferAlgoOrAsset };
|
package/dist/utils.d.ts
CHANGED
|
@@ -5,5 +5,7 @@ declare const signer: () => Promise<never[]>;
|
|
|
5
5
|
* Transfer algo or asset. 0 assetId indicates algo transfer, else asset transfer.
|
|
6
6
|
*/
|
|
7
7
|
declare function transferAlgoOrAsset(assetId: number, from: string, to: string, amount: number | bigint, params: SuggestedParams): Transaction;
|
|
8
|
+
declare const ONE_4_DP: bigint;
|
|
9
|
+
declare function mulScale(n1: bigint, n2: bigint, scale: bigint): bigint;
|
|
8
10
|
|
|
9
|
-
export { signer, transferAlgoOrAsset };
|
|
11
|
+
export { ONE_4_DP, mulScale, signer, transferAlgoOrAsset };
|
package/dist/utils.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var _chunk5KRFY72Jjs = require('./chunk-5KRFY72J.js');
|
|
5
4
|
|
|
6
5
|
|
|
6
|
+
var _chunkHEZCGFMAjs = require('./chunk-HEZCGFMA.js');
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
exports.ONE_4_DP = _chunkHEZCGFMAjs.ONE_4_DP; exports.mulScale = _chunkHEZCGFMAjs.mulScale; exports.signer = _chunkHEZCGFMAjs.signer; exports.transferAlgoOrAsset = _chunkHEZCGFMAjs.transferAlgoOrAsset;
|
|
9
13
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils.ts"],"sourcesContent":["import {\n makeAssetTransferTxnWithSuggestedParams,\n makePaymentTxnWithSuggestedParams,\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 ? makeAssetTransferTxnWithSuggestedParams(from, to, undefined, undefined, amount, undefined, assetId, params)\n : makePaymentTxnWithSuggestedParams(from, to, amount, undefined, undefined, params);\n}\n\nexport { signer, transferAlgoOrAsset };\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,wCAAwC,MAAM,IAAI,QAAW,QAAW,QAAQ,QAAW,SAAS,MAAM,IAC1G,kCAAkC,MAAM,IAAI,QAAQ,QAAW,QAAW,MAAM;AACtF;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils.ts"],"names":[],"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,wCAAwC,MAAM,IAAI,QAAW,QAAW,QAAQ,QAAW,SAAS,MAAM,IAC1G,kCAAkC,MAAM,IAAI,QAAQ,QAAW,QAAW,MAAM;AACtF","sourcesContent":["import {\n makeAssetTransferTxnWithSuggestedParams,\n makePaymentTxnWithSuggestedParams,\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 ? makeAssetTransferTxnWithSuggestedParams(from, to, undefined, undefined, amount, undefined, assetId, params)\n : makePaymentTxnWithSuggestedParams(from, to, amount, undefined, undefined, params);\n}\n\nexport { signer, transferAlgoOrAsset };\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/referrer.ts"],"sourcesContent":["import {\n assignGroupID,\n decodeAddress, encodeAddress,\n encodeUnsignedTransaction,\n LogicSigAccount,\n SuggestedParams, 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":["../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":[]}
|
package/dist/chunk-BG4SYX7Y.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }// src/FolksRouterClient.ts
|
|
2
|
-
var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios);
|
|
3
|
-
var BASE_URL = "https://api.folksrouter.io";
|
|
4
|
-
var FolksRouterClient = class {
|
|
5
|
-
constructor(network, apiKey) {
|
|
6
|
-
let url = BASE_URL;
|
|
7
|
-
if (network === "testnet" /* TESTNET */)
|
|
8
|
-
url += "/testnet";
|
|
9
|
-
url += "/v1";
|
|
10
|
-
if (apiKey !== void 0) {
|
|
11
|
-
url += "/pro";
|
|
12
|
-
}
|
|
13
|
-
this.network = network;
|
|
14
|
-
this.api = _axios2.default.create({ baseURL: url, headers: { "x-api-key": apiKey } });
|
|
15
|
-
}
|
|
16
|
-
async fetchSwapQuote(fromAssetId, toAssetId, amount, swapMode, maxGroupSize, feeBps, referrer) {
|
|
17
|
-
const { data } = await this.api.get("/fetch/quote", {
|
|
18
|
-
params: {
|
|
19
|
-
network: this.network,
|
|
20
|
-
fromAsset: fromAssetId,
|
|
21
|
-
toAsset: toAssetId,
|
|
22
|
-
amount,
|
|
23
|
-
type: swapMode,
|
|
24
|
-
maxGroupSize,
|
|
25
|
-
feeBps,
|
|
26
|
-
referrer
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
if (!data.success)
|
|
30
|
-
throw Error(data.errors);
|
|
31
|
-
const { quoteAmount, priceImpact, microalgoTxnsFee, txnPayload } = data.result;
|
|
32
|
-
return {
|
|
33
|
-
quoteAmount: BigInt(quoteAmount),
|
|
34
|
-
priceImpact,
|
|
35
|
-
microalgoTxnsFee,
|
|
36
|
-
txnPayload
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
async prepareSwapTransactions(userAddress, slippageBps, swapQuote) {
|
|
40
|
-
const { data } = await this.api.get("/prepare/swap", {
|
|
41
|
-
params: {
|
|
42
|
-
userAddress,
|
|
43
|
-
slippageBps,
|
|
44
|
-
txnPayload: swapQuote.txnPayload
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
if (!data.success)
|
|
48
|
-
throw Error(data.errors);
|
|
49
|
-
return data.result;
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
exports.FolksRouterClient = FolksRouterClient;
|
|
56
|
-
//# sourceMappingURL=chunk-BG4SYX7Y.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/FolksRouterClient.ts"],"names":[],"mappings":";AAAA,OAAO,WAA6B;AAGpC,IAAM,WAAW;AAEV,IAAM,oBAAN,MAAwB;AAAA,EAI7B,YAAY,SAAkB,QAAiB;AAE7C,QAAI,MAAM;AACV,QAAI;AAA6B,aAAO;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,EAAC,CAAC;AAAA,EAC3E;AAAA,EAEA,MAAa,eACX,aACA,WACA,QACA,UACA,cACA,QACA,UACoB;AACpB,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,MACF;AAAA,IACF,CAAC;AACD,QAAI,CAAC,KAAK;AAAS,YAAM,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,aACA,aACA,WAC2B;AAC3B,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;AAAS,YAAM,MAAM,KAAK,MAAM;AAE1C,WAAO,KAAK;AAAA,EACd;AACF","sourcesContent":["import axios, { AxiosInstance} from \"axios\";\nimport { Network, SwapMode, SwapQuote, SwapTransactions } from \"./types\";\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 += \"/v1\";\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 fetchSwapQuote(\n fromAssetId: number,\n toAssetId: number,\n amount: number | bigint,\n swapMode: SwapMode,\n maxGroupSize?: number,\n feeBps?: number | bigint,\n referrer?: string,\n ): Promise<SwapQuote> {\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 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 userAddress: string,\n slippageBps: number | bigint,\n swapQuote: SwapQuote,\n ): Promise<SwapTransactions> {\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 return data.result;\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/referrer.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n assignGroupID,\n decodeAddress, encodeAddress,\n encodeUnsignedTransaction,\n LogicSigAccount,\n SuggestedParams, 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":["../src/abiContracts/index.ts","../src/abiContracts/router.json"],"sourcesContent":["import { ABIContract } from \"algosdk\";\nimport routerABI from \"./router.json\"\n\nexport const routerABIContract = new ABIContract(routerABI)\n","{\n \"name\": \"router\",\n \"methods\": [\n {\n \"name\": \"opt_into_assets\",\n \"args\": [\n {\n \"type\": \"uint64[]\",\n \"name\": \"opt_in_assets\"\n }\n ],\n \"returns\": {\n \"type\": \"void\"\n }\n },\n {\n \"name\": \"swap_forward\",\n \"args\": [\n {\n \"type\": \"uint64\",\n \"name\": \"end_swap_txn_offset_index\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"input_asset_id\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"percent_input_asset\"\n },\n {\n \"type\": \"(uint64,bool,uint64,uint64,uint64,address,uint64,uint64,address,address,uint64,uint64)[]\",\n \"name\": \"forward_path\"\n }\n ],\n \"returns\": {\n \"type\": \"void\"\n }\n },\n {\n \"name\": \"fi_end_swap\",\n \"args\": [\n {\n \"type\": \"uint64\",\n \"name\": \"output_asset_id\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"min_received\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"fee\"\n },\n {\n \"type\": \"address\",\n \"name\": \"referrer\"\n }\n ],\n \"returns\": {\n \"type\": \"void\"\n }\n },\n {\n \"name\": \"fo_end_swap\",\n \"args\": [\n {\n \"type\": \"uint64\",\n \"name\": \"output_asset_id\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"exact_received\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"fee\"\n },\n {\n \"type\": \"address\",\n \"name\": \"referrer\"\n },\n {\n \"type\": \"(uint64,bool,uint64,uint64,uint64,address,uint64,uint64,address,address,uint64,uint64)[]\",\n \"name\": \"excess_path\"\n }\n ],\n \"returns\": {\n \"type\": \"void\"\n }\n }\n ],\n \"networks\": {}\n}\n"],"mappings":";AAAA,SAAS,mBAAmB;;;ACA5B;AAAA,EACE,MAAQ;AAAA,EACR,SAAW;AAAA,IACT;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAY,CAAC;AACf;;;AD1FO,IAAM,oBAAoB,IAAI,YAAY,cAAS;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/swap.ts"],"names":[],"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","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"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/abiContracts/index.ts","../src/abiContracts/router.json"],"names":[],"mappings":";AAAA,SAAS,mBAAmB;;;ACA5B;AAAA,EACE,MAAQ;AAAA,EACR,SAAW;AAAA,IACT;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,IACA;AAAA,MACE,MAAQ;AAAA,MACR,MAAQ;AAAA,QACN;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,QACA;AAAA,UACE,MAAQ;AAAA,UACR,MAAQ;AAAA,QACV;AAAA,MACF;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAAA,EACA,UAAY,CAAC;AACf;;;AD1FO,IAAM,oBAAoB,IAAI,YAAY,cAAS","sourcesContent":["import { ABIContract } from \"algosdk\";\nimport routerABI from \"./router.json\"\n\nexport const routerABIContract = new ABIContract(routerABI)\n","{\n \"name\": \"router\",\n \"methods\": [\n {\n \"name\": \"opt_into_assets\",\n \"args\": [\n {\n \"type\": \"uint64[]\",\n \"name\": \"opt_in_assets\"\n }\n ],\n \"returns\": {\n \"type\": \"void\"\n }\n },\n {\n \"name\": \"swap_forward\",\n \"args\": [\n {\n \"type\": \"uint64\",\n \"name\": \"end_swap_txn_offset_index\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"input_asset_id\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"percent_input_asset\"\n },\n {\n \"type\": \"(uint64,bool,uint64,uint64,uint64,address,uint64,uint64,address,address,uint64,uint64)[]\",\n \"name\": \"forward_path\"\n }\n ],\n \"returns\": {\n \"type\": \"void\"\n }\n },\n {\n \"name\": \"fi_end_swap\",\n \"args\": [\n {\n \"type\": \"uint64\",\n \"name\": \"output_asset_id\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"min_received\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"fee\"\n },\n {\n \"type\": \"address\",\n \"name\": \"referrer\"\n }\n ],\n \"returns\": {\n \"type\": \"void\"\n }\n },\n {\n \"name\": \"fo_end_swap\",\n \"args\": [\n {\n \"type\": \"uint64\",\n \"name\": \"output_asset_id\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"exact_received\"\n },\n {\n \"type\": \"uint64\",\n \"name\": \"fee\"\n },\n {\n \"type\": \"address\",\n \"name\": \"referrer\"\n },\n {\n \"type\": \"(uint64,bool,uint64,uint64,uint64,address,uint64,uint64,address,address,uint64,uint64)[]\",\n \"name\": \"excess_path\"\n }\n ],\n \"returns\": {\n \"type\": \"void\"\n }\n }\n ],\n \"networks\": {}\n}\n"]}
|
package/dist/chunk-ZDVIQZ3R.mjs
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
// src/FolksRouterClient.ts
|
|
2
|
-
import axios from "axios";
|
|
3
|
-
var BASE_URL = "https://api.folksrouter.io";
|
|
4
|
-
var FolksRouterClient = class {
|
|
5
|
-
constructor(network, apiKey) {
|
|
6
|
-
let url = BASE_URL;
|
|
7
|
-
if (network === "testnet" /* TESTNET */)
|
|
8
|
-
url += "/testnet";
|
|
9
|
-
url += "/v1";
|
|
10
|
-
if (apiKey !== void 0) {
|
|
11
|
-
url += "/pro";
|
|
12
|
-
}
|
|
13
|
-
this.network = network;
|
|
14
|
-
this.api = axios.create({ baseURL: url, headers: { "x-api-key": apiKey } });
|
|
15
|
-
}
|
|
16
|
-
async fetchSwapQuote(fromAssetId, toAssetId, amount, swapMode, maxGroupSize, feeBps, referrer) {
|
|
17
|
-
const { data } = await this.api.get("/fetch/quote", {
|
|
18
|
-
params: {
|
|
19
|
-
network: this.network,
|
|
20
|
-
fromAsset: fromAssetId,
|
|
21
|
-
toAsset: toAssetId,
|
|
22
|
-
amount,
|
|
23
|
-
type: swapMode,
|
|
24
|
-
maxGroupSize,
|
|
25
|
-
feeBps,
|
|
26
|
-
referrer
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
if (!data.success)
|
|
30
|
-
throw Error(data.errors);
|
|
31
|
-
const { quoteAmount, priceImpact, microalgoTxnsFee, txnPayload } = data.result;
|
|
32
|
-
return {
|
|
33
|
-
quoteAmount: BigInt(quoteAmount),
|
|
34
|
-
priceImpact,
|
|
35
|
-
microalgoTxnsFee,
|
|
36
|
-
txnPayload
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
async prepareSwapTransactions(userAddress, slippageBps, swapQuote) {
|
|
40
|
-
const { data } = await this.api.get("/prepare/swap", {
|
|
41
|
-
params: {
|
|
42
|
-
userAddress,
|
|
43
|
-
slippageBps,
|
|
44
|
-
txnPayload: swapQuote.txnPayload
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
if (!data.success)
|
|
48
|
-
throw Error(data.errors);
|
|
49
|
-
return data.result;
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
export {
|
|
54
|
-
FolksRouterClient
|
|
55
|
-
};
|
|
56
|
-
//# sourceMappingURL=chunk-ZDVIQZ3R.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/FolksRouterClient.ts"],"sourcesContent":["import axios, { AxiosInstance} from \"axios\";\nimport { Network, SwapMode, SwapQuote, SwapTransactions } from \"./types\";\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 += \"/v1\";\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 fetchSwapQuote(\n fromAssetId: number,\n toAssetId: number,\n amount: number | bigint,\n swapMode: SwapMode,\n maxGroupSize?: number,\n feeBps?: number | bigint,\n referrer?: string,\n ): Promise<SwapQuote> {\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 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 userAddress: string,\n slippageBps: number | bigint,\n swapQuote: SwapQuote,\n ): Promise<SwapTransactions> {\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 return data.result;\n }\n}\n"],"mappings":";AAAA,OAAO,WAA6B;AAGpC,IAAM,WAAW;AAEV,IAAM,oBAAN,MAAwB;AAAA,EAI7B,YAAY,SAAkB,QAAiB;AAE7C,QAAI,MAAM;AACV,QAAI;AAA6B,aAAO;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,EAAC,CAAC;AAAA,EAC3E;AAAA,EAEA,MAAa,eACX,aACA,WACA,QACA,UACA,cACA,QACA,UACoB;AACpB,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,MACF;AAAA,IACF,CAAC;AACD,QAAI,CAAC,KAAK;AAAS,YAAM,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,aACA,aACA,WAC2B;AAC3B,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;AAAS,YAAM,MAAM,KAAK,MAAM;AAE1C,WAAO,KAAK;AAAA,EACd;AACF;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types.ts"],"sourcesContent":["type ReferrerGroupTransaction = {\n unsignedTxn: Uint8Array;\n lsig?: Uint8Array;\n}[];\n\nenum Network {\n MAINNET = \"mainnet\",\n TESTNET = \"testnet\",\n}\n\nenum SwapMode {\n FIXED_INPUT = \"FIXED_INPUT\",\n FIXED_OUTPUT = \"FIXED_OUTPUT\",\n}\n\ninterface SwapQuote {\n quoteAmount: bigint;\n priceImpact: number;\n microalgoTxnsFee: number;\n txnPayload: string;\n}\n\ntype SwapTransactions = string[];\n\nexport { ReferrerGroupTransaction, Network, SwapMode, SwapQuote, SwapTransactions }\n"],"mappings":";AAKA,IAAK,UAAL,kBAAKA,aAAL;AACE,EAAAA,SAAA,aAAU;AACV,EAAAA,SAAA,aAAU;AAFP,SAAAA;AAAA,GAAA;AAKL,IAAK,WAAL,kBAAKC,cAAL;AACE,EAAAA,UAAA,iBAAc;AACd,EAAAA,UAAA,kBAAe;AAFZ,SAAAA;AAAA,GAAA;","names":["Network","SwapMode"]}
|