@folks-router/js-sdk 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -0
- package/dist/FolksRouterClient.d.mts +11 -0
- package/dist/FolksRouterClient.d.ts +11 -0
- package/dist/FolksRouterClient.js +8 -0
- package/dist/FolksRouterClient.js.map +1 -0
- package/dist/FolksRouterClient.mjs +8 -0
- package/dist/FolksRouterClient.mjs.map +1 -0
- package/dist/abiContracts/index.d.mts +5 -0
- package/dist/abiContracts/index.d.ts +5 -0
- package/dist/abiContracts/index.js +7 -0
- package/dist/abiContracts/index.js.map +1 -0
- package/dist/abiContracts/index.mjs +7 -0
- package/dist/abiContracts/index.mjs.map +1 -0
- package/dist/chunk-3LWHLTYR.js +17 -0
- package/dist/chunk-3LWHLTYR.js.map +1 -0
- package/dist/chunk-3SISBSYJ.mjs +15 -0
- package/dist/chunk-3SISBSYJ.mjs.map +1 -0
- package/dist/chunk-5KRFY72J.js +15 -0
- package/dist/chunk-5KRFY72J.js.map +1 -0
- package/dist/chunk-6756PQ2I.mjs +207 -0
- package/dist/chunk-6756PQ2I.mjs.map +1 -0
- package/dist/chunk-BDETNMUS.mjs +39 -0
- package/dist/chunk-BDETNMUS.mjs.map +1 -0
- package/dist/chunk-BG4SYX7Y.js +56 -0
- package/dist/chunk-BG4SYX7Y.js.map +1 -0
- package/dist/chunk-P22I3FWL.mjs +7 -0
- package/dist/chunk-P22I3FWL.mjs.map +1 -0
- package/dist/chunk-PFXLGIPX.js +207 -0
- package/dist/chunk-PFXLGIPX.js.map +1 -0
- package/dist/chunk-S2SNZROA.mjs +106 -0
- package/dist/chunk-S2SNZROA.mjs.map +1 -0
- package/dist/chunk-T37SGVC7.js +7 -0
- package/dist/chunk-T37SGVC7.js.map +1 -0
- package/dist/chunk-UBG6SOYP.js +39 -0
- package/dist/chunk-UBG6SOYP.js.map +1 -0
- package/dist/chunk-VT2DNZR6.js +106 -0
- package/dist/chunk-VT2DNZR6.js.map +1 -0
- package/dist/chunk-XVPB7BHI.js +7 -0
- package/dist/chunk-XVPB7BHI.js.map +1 -0
- package/dist/chunk-Z537KBSF.mjs +7 -0
- package/dist/chunk-Z537KBSF.mjs.map +1 -0
- package/dist/chunk-ZDVIQZ3R.mjs +56 -0
- package/dist/chunk-ZDVIQZ3R.mjs.map +1 -0
- package/dist/chunk-ZTQMUDZG.mjs +17 -0
- package/dist/chunk-ZTQMUDZG.mjs.map +1 -0
- package/dist/constants/mainnetConstants.d.mts +3 -0
- package/dist/constants/mainnetConstants.d.ts +3 -0
- package/dist/constants/mainnetConstants.js +7 -0
- package/dist/constants/mainnetConstants.js.map +1 -0
- package/dist/constants/mainnetConstants.mjs +7 -0
- package/dist/constants/mainnetConstants.mjs.map +1 -0
- package/dist/constants/testnetConstants.d.mts +3 -0
- package/dist/constants/testnetConstants.d.ts +3 -0
- package/dist/constants/testnetConstants.js +7 -0
- package/dist/constants/testnetConstants.js.map +1 -0
- package/dist/constants/testnetConstants.mjs +7 -0
- package/dist/constants/testnetConstants.mjs.map +1 -0
- package/dist/index.d.mts +8 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +38 -0
- package/dist/index.mjs.map +1 -0
- package/dist/referrer.d.mts +8 -0
- package/dist/referrer.d.ts +8 -0
- package/dist/referrer.js +12 -0
- package/dist/referrer.js.map +1 -0
- package/dist/referrer.mjs +12 -0
- package/dist/referrer.mjs.map +1 -0
- package/dist/swap.d.mts +5 -0
- package/dist/swap.d.ts +5 -0
- package/dist/swap.js +9 -0
- package/dist/swap.js.map +1 -0
- package/dist/swap.mjs +9 -0
- package/dist/swap.mjs.map +1 -0
- package/dist/types.d.mts +21 -0
- package/dist/types.d.ts +21 -0
- package/dist/types.js +9 -0
- package/dist/types.js.map +1 -0
- package/dist/types.mjs +9 -0
- package/dist/types.mjs.map +1 -0
- package/dist/utils.d.mts +9 -0
- package/dist/utils.d.ts +9 -0
- package/dist/utils.js +9 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.mjs +9 -0
- package/dist/utils.mjs.map +1 -0
- package/package.json +8 -1
package/README.md
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# @folks-router/js-sdk
|
|
2
|
+
|
|
3
|
+
The official JavaScript/TypeScript SDK for Folks Router DEX aggregator.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Install using your package manager of choice.
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
# npm
|
|
11
|
+
npm install @folks-router/js-sdk
|
|
12
|
+
|
|
13
|
+
# yarn
|
|
14
|
+
yarn add @folks-router/js-sdk
|
|
15
|
+
|
|
16
|
+
# pnpm
|
|
17
|
+
pnpm add @folks-router/js-sdk
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Documentation
|
|
21
|
+
|
|
22
|
+
Documentation for this SDK is available at [folksrouter.io](https://folksrouter.io/docs/sdk/overview/).
|
|
23
|
+
|
|
24
|
+
## Usage
|
|
25
|
+
|
|
26
|
+
```ts
|
|
27
|
+
import { FolksRouterClient, Network, SwapMode } from "@folks-router/js-sdk";
|
|
28
|
+
import { Algodv2, decodeUnsignedTransaction, generateAccount } from "algosdk";
|
|
29
|
+
|
|
30
|
+
const senderAccount = generateAccount();
|
|
31
|
+
const algodClient = new Algodv2("", "https://mainnet-api.algonode.cloud/", 443);
|
|
32
|
+
const folksRouterClient = new FolksRouterClient(Network.MAINNET);
|
|
33
|
+
|
|
34
|
+
async function main() {
|
|
35
|
+
// Fetch Swap Quote
|
|
36
|
+
const swapQuote = await folksRouterClient.fetchSwapQuote(0, 31566704, BigInt(10e6), SwapMode.FIXED_INPUT);
|
|
37
|
+
|
|
38
|
+
// Prepare Swap Transactions
|
|
39
|
+
const base64txns = await folksRouterClient.prepareSwapTransactions(senderAccount.addr, BigInt(10), swapQuote);
|
|
40
|
+
const unsignedTxns = base64txns.map((txn) => decodeUnsignedTransaction(Buffer.from(txn, "base64")));
|
|
41
|
+
const signedTxns = unsignedTxns.map((txn) => txn.signTxn(senderAccount.sk));
|
|
42
|
+
|
|
43
|
+
// Submit Transaction
|
|
44
|
+
await algodClient.sendRawTransaction(signedTxns).do();
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
main();
|
|
48
|
+
```
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Network, SwapMode, SwapQuote, SwapTransactions } from './types.mjs';
|
|
2
|
+
|
|
3
|
+
declare class FolksRouterClient {
|
|
4
|
+
private readonly network;
|
|
5
|
+
private readonly api;
|
|
6
|
+
constructor(network: Network, apiKey?: string);
|
|
7
|
+
fetchSwapQuote(fromAssetId: number, toAssetId: number, amount: number | bigint, swapMode: SwapMode, maxGroupSize?: number, feeBps?: number | bigint, referrer?: string): Promise<SwapQuote>;
|
|
8
|
+
prepareSwapTransactions(userAddress: string, slippageBps: number | bigint, swapQuote: SwapQuote): Promise<SwapTransactions>;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { FolksRouterClient };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Network, SwapMode, SwapQuote, SwapTransactions } from './types.js';
|
|
2
|
+
|
|
3
|
+
declare class FolksRouterClient {
|
|
4
|
+
private readonly network;
|
|
5
|
+
private readonly api;
|
|
6
|
+
constructor(network: Network, apiKey?: string);
|
|
7
|
+
fetchSwapQuote(fromAssetId: number, toAssetId: number, amount: number | bigint, swapMode: SwapMode, maxGroupSize?: number, feeBps?: number | bigint, referrer?: string): Promise<SwapQuote>;
|
|
8
|
+
prepareSwapTransactions(userAddress: string, slippageBps: number | bigint, swapQuote: SwapQuote): Promise<SwapTransactions>;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { FolksRouterClient };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkBG4SYX7Yjs = require('./chunk-BG4SYX7Y.js');
|
|
4
|
+
require('./chunk-3LWHLTYR.js');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
exports.FolksRouterClient = _chunkBG4SYX7Yjs.FolksRouterClient;
|
|
8
|
+
//# sourceMappingURL=FolksRouterClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/types.ts
|
|
2
|
+
var Network = /* @__PURE__ */ ((Network2) => {
|
|
3
|
+
Network2["MAINNET"] = "mainnet";
|
|
4
|
+
Network2["TESTNET"] = "testnet";
|
|
5
|
+
return Network2;
|
|
6
|
+
})(Network || {});
|
|
7
|
+
var SwapMode = /* @__PURE__ */ ((SwapMode2) => {
|
|
8
|
+
SwapMode2["FIXED_INPUT"] = "FIXED_INPUT";
|
|
9
|
+
SwapMode2["FIXED_OUTPUT"] = "FIXED_OUTPUT";
|
|
10
|
+
return SwapMode2;
|
|
11
|
+
})(SwapMode || {});
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
exports.Network = Network; exports.SwapMode = SwapMode;
|
|
17
|
+
//# sourceMappingURL=chunk-3LWHLTYR.js.map
|
|
@@ -0,0 +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 }\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// src/utils.ts
|
|
2
|
+
import {
|
|
3
|
+
makeAssetTransferTxnWithSuggestedParams,
|
|
4
|
+
makePaymentTxnWithSuggestedParams
|
|
5
|
+
} from "algosdk";
|
|
6
|
+
var signer = async () => [];
|
|
7
|
+
function transferAlgoOrAsset(assetId, from, to, amount, params) {
|
|
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
|
+
}
|
|
10
|
+
|
|
11
|
+
export {
|
|
12
|
+
signer,
|
|
13
|
+
transferAlgoOrAsset
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=chunk-3SISBSYJ.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\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":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/utils.ts
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
var _algosdk = require('algosdk');
|
|
6
|
+
var signer = async () => [];
|
|
7
|
+
function transferAlgoOrAsset(assetId, from, to, amount, params) {
|
|
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
|
+
}
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
exports.signer = signer; exports.transferAlgoOrAsset = transferAlgoOrAsset;
|
|
15
|
+
//# sourceMappingURL=chunk-5KRFY72J.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","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"]}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import {
|
|
2
|
+
transferAlgoOrAsset
|
|
3
|
+
} from "./chunk-3SISBSYJ.mjs";
|
|
4
|
+
|
|
5
|
+
// src/referrer.ts
|
|
6
|
+
import {
|
|
7
|
+
assignGroupID,
|
|
8
|
+
decodeAddress,
|
|
9
|
+
encodeAddress,
|
|
10
|
+
encodeUnsignedTransaction,
|
|
11
|
+
LogicSigAccount
|
|
12
|
+
} from "algosdk";
|
|
13
|
+
function getReferrerLogicSig(referrerAddr) {
|
|
14
|
+
const prefix = Uint8Array.from([
|
|
15
|
+
9,
|
|
16
|
+
32,
|
|
17
|
+
3,
|
|
18
|
+
1,
|
|
19
|
+
4,
|
|
20
|
+
0,
|
|
21
|
+
128,
|
|
22
|
+
12,
|
|
23
|
+
70,
|
|
24
|
+
79,
|
|
25
|
+
76,
|
|
26
|
+
75,
|
|
27
|
+
83,
|
|
28
|
+
95,
|
|
29
|
+
82,
|
|
30
|
+
79,
|
|
31
|
+
85,
|
|
32
|
+
84,
|
|
33
|
+
69,
|
|
34
|
+
82,
|
|
35
|
+
72,
|
|
36
|
+
49,
|
|
37
|
+
1,
|
|
38
|
+
36,
|
|
39
|
+
18,
|
|
40
|
+
68,
|
|
41
|
+
49,
|
|
42
|
+
32,
|
|
43
|
+
50,
|
|
44
|
+
3,
|
|
45
|
+
18,
|
|
46
|
+
68,
|
|
47
|
+
49,
|
|
48
|
+
9,
|
|
49
|
+
50,
|
|
50
|
+
3,
|
|
51
|
+
18,
|
|
52
|
+
68,
|
|
53
|
+
49,
|
|
54
|
+
21,
|
|
55
|
+
50,
|
|
56
|
+
3,
|
|
57
|
+
18,
|
|
58
|
+
68,
|
|
59
|
+
49,
|
|
60
|
+
16,
|
|
61
|
+
34,
|
|
62
|
+
18,
|
|
63
|
+
49,
|
|
64
|
+
16,
|
|
65
|
+
35,
|
|
66
|
+
18,
|
|
67
|
+
17,
|
|
68
|
+
68,
|
|
69
|
+
49,
|
|
70
|
+
16,
|
|
71
|
+
35,
|
|
72
|
+
18,
|
|
73
|
+
49,
|
|
74
|
+
20,
|
|
75
|
+
49,
|
|
76
|
+
0,
|
|
77
|
+
18,
|
|
78
|
+
16,
|
|
79
|
+
64,
|
|
80
|
+
0,
|
|
81
|
+
53,
|
|
82
|
+
49,
|
|
83
|
+
16,
|
|
84
|
+
35,
|
|
85
|
+
18,
|
|
86
|
+
64,
|
|
87
|
+
0,
|
|
88
|
+
41,
|
|
89
|
+
49,
|
|
90
|
+
7,
|
|
91
|
+
128,
|
|
92
|
+
32
|
|
93
|
+
]);
|
|
94
|
+
const suffix = Uint8Array.from([
|
|
95
|
+
18,
|
|
96
|
+
68,
|
|
97
|
+
66,
|
|
98
|
+
0,
|
|
99
|
+
79,
|
|
100
|
+
49,
|
|
101
|
+
20,
|
|
102
|
+
66,
|
|
103
|
+
255,
|
|
104
|
+
212,
|
|
105
|
+
49,
|
|
106
|
+
22,
|
|
107
|
+
34,
|
|
108
|
+
9,
|
|
109
|
+
56,
|
|
110
|
+
16,
|
|
111
|
+
34,
|
|
112
|
+
18,
|
|
113
|
+
68,
|
|
114
|
+
49,
|
|
115
|
+
22,
|
|
116
|
+
34,
|
|
117
|
+
9,
|
|
118
|
+
56,
|
|
119
|
+
0,
|
|
120
|
+
49,
|
|
121
|
+
0,
|
|
122
|
+
19,
|
|
123
|
+
68,
|
|
124
|
+
49,
|
|
125
|
+
22,
|
|
126
|
+
34,
|
|
127
|
+
9,
|
|
128
|
+
56,
|
|
129
|
+
7,
|
|
130
|
+
49,
|
|
131
|
+
0,
|
|
132
|
+
18,
|
|
133
|
+
68,
|
|
134
|
+
49,
|
|
135
|
+
22,
|
|
136
|
+
34,
|
|
137
|
+
9,
|
|
138
|
+
56,
|
|
139
|
+
8,
|
|
140
|
+
50,
|
|
141
|
+
1,
|
|
142
|
+
18,
|
|
143
|
+
68,
|
|
144
|
+
49,
|
|
145
|
+
22,
|
|
146
|
+
34,
|
|
147
|
+
9,
|
|
148
|
+
56,
|
|
149
|
+
32,
|
|
150
|
+
50,
|
|
151
|
+
3,
|
|
152
|
+
18,
|
|
153
|
+
68,
|
|
154
|
+
49,
|
|
155
|
+
22,
|
|
156
|
+
34,
|
|
157
|
+
9,
|
|
158
|
+
56,
|
|
159
|
+
9,
|
|
160
|
+
50,
|
|
161
|
+
3,
|
|
162
|
+
18,
|
|
163
|
+
68,
|
|
164
|
+
49,
|
|
165
|
+
22,
|
|
166
|
+
34,
|
|
167
|
+
9,
|
|
168
|
+
56,
|
|
169
|
+
21,
|
|
170
|
+
50,
|
|
171
|
+
3,
|
|
172
|
+
18,
|
|
173
|
+
68,
|
|
174
|
+
49,
|
|
175
|
+
18,
|
|
176
|
+
36,
|
|
177
|
+
18,
|
|
178
|
+
68,
|
|
179
|
+
34,
|
|
180
|
+
67
|
|
181
|
+
]);
|
|
182
|
+
return new LogicSigAccount(new Uint8Array([...prefix, ...decodeAddress(referrerAddr).publicKey, ...suffix]));
|
|
183
|
+
}
|
|
184
|
+
var buildReferrerGroupTransaction = (txns, lsig) => assignGroupID(txns).map((txn) => ({
|
|
185
|
+
unsignedTxn: encodeUnsignedTransaction(txn),
|
|
186
|
+
lsig: encodeAddress(txn.from.publicKey) === lsig.address() ? lsig.toByte() : void 0
|
|
187
|
+
}));
|
|
188
|
+
function prepareReferrerOptIntoAsset(senderAddr, referrerAddr, assetId, params) {
|
|
189
|
+
const lsig = getReferrerLogicSig(referrerAddr);
|
|
190
|
+
const MIN_BALANCE = BigInt(1e5);
|
|
191
|
+
const minBalancePayment = transferAlgoOrAsset(0, senderAddr, lsig.address(), MIN_BALANCE, { ...params, fee: 2e3 });
|
|
192
|
+
const assetOptIn = transferAlgoOrAsset(assetId, lsig.address(), lsig.address(), 0, { ...params, fee: 0 });
|
|
193
|
+
return buildReferrerGroupTransaction([minBalancePayment, assetOptIn], lsig);
|
|
194
|
+
}
|
|
195
|
+
function prepareClaimReferrerFees(senderAddr, referrerAddr, assetId, amount, params) {
|
|
196
|
+
const lsig = getReferrerLogicSig(referrerAddr);
|
|
197
|
+
const groupFeePayment = transferAlgoOrAsset(0, senderAddr, senderAddr, 0, { ...params, fee: 2e3 });
|
|
198
|
+
const claim = transferAlgoOrAsset(assetId, lsig.address(), referrerAddr, amount, { ...params, fee: 0 });
|
|
199
|
+
return buildReferrerGroupTransaction([groupFeePayment, claim], lsig);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
export {
|
|
203
|
+
getReferrerLogicSig,
|
|
204
|
+
prepareReferrerOptIntoAsset,
|
|
205
|
+
prepareClaimReferrerFees
|
|
206
|
+
};
|
|
207
|
+
//# sourceMappingURL=chunk-6756PQ2I.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
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":[]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import {
|
|
2
|
+
signer,
|
|
3
|
+
transferAlgoOrAsset
|
|
4
|
+
} from "./chunk-3SISBSYJ.mjs";
|
|
5
|
+
import {
|
|
6
|
+
routerABIContract
|
|
7
|
+
} from "./chunk-S2SNZROA.mjs";
|
|
8
|
+
|
|
9
|
+
// src/swap.ts
|
|
10
|
+
import {
|
|
11
|
+
assignGroupID,
|
|
12
|
+
AtomicTransactionComposer,
|
|
13
|
+
getApplicationAddress,
|
|
14
|
+
getMethodByName
|
|
15
|
+
} from "algosdk";
|
|
16
|
+
function prepareEnableAssetToBeSwapped(appId, senderAddr, assetIds, params) {
|
|
17
|
+
const amount = assetIds.length * 1e5;
|
|
18
|
+
const paymentTxn = transferAlgoOrAsset(0, senderAddr, getApplicationAddress(appId), amount, params);
|
|
19
|
+
const atc = new AtomicTransactionComposer();
|
|
20
|
+
atc.addMethodCall({
|
|
21
|
+
sender: senderAddr,
|
|
22
|
+
signer,
|
|
23
|
+
appID: appId,
|
|
24
|
+
method: getMethodByName(routerABIContract.methods, "opt_into_assets"),
|
|
25
|
+
methodArgs: [assetIds],
|
|
26
|
+
appForeignAssets: assetIds,
|
|
27
|
+
suggestedParams: { ...params, fee: (1 + assetIds.length) * 1e3 }
|
|
28
|
+
});
|
|
29
|
+
const txns = atc.buildGroup().map(({ txn }) => {
|
|
30
|
+
txn.group = void 0;
|
|
31
|
+
return txn;
|
|
32
|
+
});
|
|
33
|
+
return assignGroupID([paymentTxn, txns[0]]);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export {
|
|
37
|
+
prepareEnableAssetToBeSwapped
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=chunk-BDETNMUS.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,56 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/constants/testnetConstants.ts"],"sourcesContent":["const TestnetFolksRouterAppId = 430586725;\n\nexport { TestnetFolksRouterAppId };\n"],"mappings":";AAAA,IAAM,0BAA0B;","names":[]}
|