@meteora-ag/cp-amm-sdk 1.2.6 → 1.2.7
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/index.d.mts +1828 -979
- package/dist/index.d.ts +1828 -979
- package/dist/index.js +1596 -684
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1703 -791
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -1
package/dist/index.mjs
CHANGED
|
@@ -40,8 +40,8 @@ var __async = (__this, __arguments, generator) => {
|
|
|
40
40
|
};
|
|
41
41
|
|
|
42
42
|
// src/CpAmm.ts
|
|
43
|
-
import { Program } from "@coral-xyz/anchor";
|
|
44
|
-
import { NATIVE_MINT as NATIVE_MINT2, TOKEN_2022_PROGRAM_ID as
|
|
43
|
+
import { Program as Program2 } from "@coral-xyz/anchor";
|
|
44
|
+
import { NATIVE_MINT as NATIVE_MINT2, TOKEN_2022_PROGRAM_ID as TOKEN_2022_PROGRAM_ID3 } from "@solana/spl-token";
|
|
45
45
|
import invariant from "invariant";
|
|
46
46
|
|
|
47
47
|
// src/idl/cp_amm.json
|
|
@@ -49,7 +49,7 @@ var cp_amm_default = {
|
|
|
49
49
|
address: "cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG",
|
|
50
50
|
metadata: {
|
|
51
51
|
name: "cp_amm",
|
|
52
|
-
version: "0.1.
|
|
52
|
+
version: "0.1.6",
|
|
53
53
|
spec: "0.1.0",
|
|
54
54
|
description: "Created with Anchor"
|
|
55
55
|
},
|
|
@@ -720,19 +720,19 @@ var cp_amm_default = {
|
|
|
720
720
|
}
|
|
721
721
|
},
|
|
722
722
|
{
|
|
723
|
-
name: "
|
|
723
|
+
name: "operator",
|
|
724
724
|
docs: [
|
|
725
725
|
"Claim fee operator"
|
|
726
726
|
]
|
|
727
727
|
},
|
|
728
728
|
{
|
|
729
|
-
name: "
|
|
729
|
+
name: "whitelisted_address",
|
|
730
730
|
docs: [
|
|
731
731
|
"Operator"
|
|
732
732
|
],
|
|
733
733
|
signer: true,
|
|
734
734
|
relations: [
|
|
735
|
-
"
|
|
735
|
+
"operator"
|
|
736
736
|
]
|
|
737
737
|
},
|
|
738
738
|
{
|
|
@@ -894,29 +894,35 @@ var cp_amm_default = {
|
|
|
894
894
|
]
|
|
895
895
|
},
|
|
896
896
|
{
|
|
897
|
-
name: "
|
|
897
|
+
name: "close_config",
|
|
898
898
|
discriminator: [
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
899
|
+
145,
|
|
900
|
+
9,
|
|
901
|
+
72,
|
|
902
|
+
157,
|
|
903
903
|
95,
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
904
|
+
125,
|
|
905
|
+
61,
|
|
906
|
+
85
|
|
907
907
|
],
|
|
908
908
|
accounts: [
|
|
909
909
|
{
|
|
910
|
-
name: "
|
|
910
|
+
name: "config",
|
|
911
911
|
writable: true
|
|
912
912
|
},
|
|
913
913
|
{
|
|
914
|
-
name: "
|
|
915
|
-
writable: true
|
|
914
|
+
name: "operator"
|
|
916
915
|
},
|
|
917
916
|
{
|
|
918
|
-
name: "
|
|
919
|
-
signer: true
|
|
917
|
+
name: "whitelisted_address",
|
|
918
|
+
signer: true,
|
|
919
|
+
relations: [
|
|
920
|
+
"operator"
|
|
921
|
+
]
|
|
922
|
+
},
|
|
923
|
+
{
|
|
924
|
+
name: "rent_receiver",
|
|
925
|
+
writable: true
|
|
920
926
|
},
|
|
921
927
|
{
|
|
922
928
|
name: "event_authority",
|
|
@@ -954,25 +960,24 @@ var cp_amm_default = {
|
|
|
954
960
|
args: []
|
|
955
961
|
},
|
|
956
962
|
{
|
|
957
|
-
name: "
|
|
963
|
+
name: "close_operator_account",
|
|
958
964
|
discriminator: [
|
|
959
|
-
|
|
965
|
+
171,
|
|
960
966
|
9,
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
+
213,
|
|
968
|
+
74,
|
|
969
|
+
120,
|
|
970
|
+
23,
|
|
971
|
+
3,
|
|
972
|
+
29
|
|
967
973
|
],
|
|
968
974
|
accounts: [
|
|
969
975
|
{
|
|
970
|
-
name: "
|
|
976
|
+
name: "operator",
|
|
971
977
|
writable: true
|
|
972
978
|
},
|
|
973
979
|
{
|
|
974
980
|
name: "admin",
|
|
975
|
-
writable: true,
|
|
976
981
|
signer: true
|
|
977
982
|
},
|
|
978
983
|
{
|
|
@@ -1127,9 +1132,14 @@ var cp_amm_default = {
|
|
|
1127
1132
|
writable: true
|
|
1128
1133
|
},
|
|
1129
1134
|
{
|
|
1130
|
-
name: "
|
|
1131
|
-
|
|
1132
|
-
|
|
1135
|
+
name: "operator"
|
|
1136
|
+
},
|
|
1137
|
+
{
|
|
1138
|
+
name: "whitelisted_address",
|
|
1139
|
+
signer: true,
|
|
1140
|
+
relations: [
|
|
1141
|
+
"operator"
|
|
1142
|
+
]
|
|
1133
1143
|
},
|
|
1134
1144
|
{
|
|
1135
1145
|
name: "rent_receiver",
|
|
@@ -1171,20 +1181,23 @@ var cp_amm_default = {
|
|
|
1171
1181
|
args: []
|
|
1172
1182
|
},
|
|
1173
1183
|
{
|
|
1174
|
-
name: "
|
|
1184
|
+
name: "create_config",
|
|
1185
|
+
docs: [
|
|
1186
|
+
"OPERATOR FUNCTIONS /////"
|
|
1187
|
+
],
|
|
1175
1188
|
discriminator: [
|
|
1176
|
-
|
|
1177
|
-
62,
|
|
1189
|
+
201,
|
|
1178
1190
|
207,
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1191
|
+
243,
|
|
1192
|
+
114,
|
|
1193
|
+
75,
|
|
1194
|
+
111,
|
|
1195
|
+
47,
|
|
1196
|
+
189
|
|
1184
1197
|
],
|
|
1185
1198
|
accounts: [
|
|
1186
1199
|
{
|
|
1187
|
-
name: "
|
|
1200
|
+
name: "config",
|
|
1188
1201
|
writable: true,
|
|
1189
1202
|
pda: {
|
|
1190
1203
|
seeds: [
|
|
@@ -1192,21 +1205,16 @@ var cp_amm_default = {
|
|
|
1192
1205
|
kind: "const",
|
|
1193
1206
|
value: [
|
|
1194
1207
|
99,
|
|
1195
|
-
102,
|
|
1196
|
-
95,
|
|
1197
|
-
111,
|
|
1198
|
-
112,
|
|
1199
|
-
101,
|
|
1200
|
-
114,
|
|
1201
|
-
97,
|
|
1202
|
-
116,
|
|
1203
1208
|
111,
|
|
1204
|
-
|
|
1209
|
+
110,
|
|
1210
|
+
102,
|
|
1211
|
+
105,
|
|
1212
|
+
103
|
|
1205
1213
|
]
|
|
1206
1214
|
},
|
|
1207
1215
|
{
|
|
1208
|
-
kind: "
|
|
1209
|
-
path: "
|
|
1216
|
+
kind: "arg",
|
|
1217
|
+
path: "index"
|
|
1210
1218
|
}
|
|
1211
1219
|
]
|
|
1212
1220
|
}
|
|
@@ -1215,7 +1223,14 @@ var cp_amm_default = {
|
|
|
1215
1223
|
name: "operator"
|
|
1216
1224
|
},
|
|
1217
1225
|
{
|
|
1218
|
-
name: "
|
|
1226
|
+
name: "whitelisted_address",
|
|
1227
|
+
signer: true,
|
|
1228
|
+
relations: [
|
|
1229
|
+
"operator"
|
|
1230
|
+
]
|
|
1231
|
+
},
|
|
1232
|
+
{
|
|
1233
|
+
name: "payer",
|
|
1219
1234
|
writable: true,
|
|
1220
1235
|
signer: true
|
|
1221
1236
|
},
|
|
@@ -1256,22 +1271,32 @@ var cp_amm_default = {
|
|
|
1256
1271
|
name: "program"
|
|
1257
1272
|
}
|
|
1258
1273
|
],
|
|
1259
|
-
args: [
|
|
1274
|
+
args: [
|
|
1275
|
+
{
|
|
1276
|
+
name: "index",
|
|
1277
|
+
type: "u64"
|
|
1278
|
+
},
|
|
1279
|
+
{
|
|
1280
|
+
name: "config_parameters",
|
|
1281
|
+
type: {
|
|
1282
|
+
defined: {
|
|
1283
|
+
name: "StaticConfigParameters"
|
|
1284
|
+
}
|
|
1285
|
+
}
|
|
1286
|
+
}
|
|
1287
|
+
]
|
|
1260
1288
|
},
|
|
1261
1289
|
{
|
|
1262
|
-
name: "
|
|
1263
|
-
docs: [
|
|
1264
|
-
"ADMIN FUNCTIONS /////"
|
|
1265
|
-
],
|
|
1290
|
+
name: "create_dynamic_config",
|
|
1266
1291
|
discriminator: [
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1292
|
+
81,
|
|
1293
|
+
251,
|
|
1294
|
+
122,
|
|
1295
|
+
78,
|
|
1296
|
+
66,
|
|
1297
|
+
57,
|
|
1298
|
+
208,
|
|
1299
|
+
82
|
|
1275
1300
|
],
|
|
1276
1301
|
accounts: [
|
|
1277
1302
|
{
|
|
@@ -1298,7 +1323,17 @@ var cp_amm_default = {
|
|
|
1298
1323
|
}
|
|
1299
1324
|
},
|
|
1300
1325
|
{
|
|
1301
|
-
name: "
|
|
1326
|
+
name: "operator"
|
|
1327
|
+
},
|
|
1328
|
+
{
|
|
1329
|
+
name: "whitelisted_address",
|
|
1330
|
+
signer: true,
|
|
1331
|
+
relations: [
|
|
1332
|
+
"operator"
|
|
1333
|
+
]
|
|
1334
|
+
},
|
|
1335
|
+
{
|
|
1336
|
+
name: "payer",
|
|
1302
1337
|
writable: true,
|
|
1303
1338
|
signer: true
|
|
1304
1339
|
},
|
|
@@ -1348,50 +1383,62 @@ var cp_amm_default = {
|
|
|
1348
1383
|
name: "config_parameters",
|
|
1349
1384
|
type: {
|
|
1350
1385
|
defined: {
|
|
1351
|
-
name: "
|
|
1386
|
+
name: "DynamicConfigParameters"
|
|
1352
1387
|
}
|
|
1353
1388
|
}
|
|
1354
1389
|
}
|
|
1355
1390
|
]
|
|
1356
1391
|
},
|
|
1357
1392
|
{
|
|
1358
|
-
name: "
|
|
1393
|
+
name: "create_operator_account",
|
|
1394
|
+
docs: [
|
|
1395
|
+
"ADMIN FUNCTIONS /////"
|
|
1396
|
+
],
|
|
1359
1397
|
discriminator: [
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1398
|
+
221,
|
|
1399
|
+
64,
|
|
1400
|
+
246,
|
|
1401
|
+
149,
|
|
1402
|
+
240,
|
|
1403
|
+
153,
|
|
1404
|
+
229,
|
|
1405
|
+
163
|
|
1368
1406
|
],
|
|
1369
1407
|
accounts: [
|
|
1370
1408
|
{
|
|
1371
|
-
name: "
|
|
1409
|
+
name: "operator",
|
|
1372
1410
|
writable: true,
|
|
1373
1411
|
pda: {
|
|
1374
1412
|
seeds: [
|
|
1375
1413
|
{
|
|
1376
1414
|
kind: "const",
|
|
1377
1415
|
value: [
|
|
1378
|
-
99,
|
|
1379
1416
|
111,
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1417
|
+
112,
|
|
1418
|
+
101,
|
|
1419
|
+
114,
|
|
1420
|
+
97,
|
|
1421
|
+
116,
|
|
1422
|
+
111,
|
|
1423
|
+
114
|
|
1384
1424
|
]
|
|
1385
1425
|
},
|
|
1386
1426
|
{
|
|
1387
|
-
kind: "
|
|
1388
|
-
path: "
|
|
1427
|
+
kind: "account",
|
|
1428
|
+
path: "whitelisted_address"
|
|
1389
1429
|
}
|
|
1390
1430
|
]
|
|
1391
1431
|
}
|
|
1392
1432
|
},
|
|
1433
|
+
{
|
|
1434
|
+
name: "whitelisted_address"
|
|
1435
|
+
},
|
|
1393
1436
|
{
|
|
1394
1437
|
name: "admin",
|
|
1438
|
+
signer: true
|
|
1439
|
+
},
|
|
1440
|
+
{
|
|
1441
|
+
name: "payer",
|
|
1395
1442
|
writable: true,
|
|
1396
1443
|
signer: true
|
|
1397
1444
|
},
|
|
@@ -1434,16 +1481,8 @@ var cp_amm_default = {
|
|
|
1434
1481
|
],
|
|
1435
1482
|
args: [
|
|
1436
1483
|
{
|
|
1437
|
-
name: "
|
|
1438
|
-
type: "
|
|
1439
|
-
},
|
|
1440
|
-
{
|
|
1441
|
-
name: "config_parameters",
|
|
1442
|
-
type: {
|
|
1443
|
-
defined: {
|
|
1444
|
-
name: "DynamicConfigParameters"
|
|
1445
|
-
}
|
|
1446
|
-
}
|
|
1484
|
+
name: "permission",
|
|
1485
|
+
type: "u128"
|
|
1447
1486
|
}
|
|
1448
1487
|
]
|
|
1449
1488
|
},
|
|
@@ -1643,7 +1682,17 @@ var cp_amm_default = {
|
|
|
1643
1682
|
name: "token_mint"
|
|
1644
1683
|
},
|
|
1645
1684
|
{
|
|
1646
|
-
name: "
|
|
1685
|
+
name: "operator"
|
|
1686
|
+
},
|
|
1687
|
+
{
|
|
1688
|
+
name: "whitelisted_address",
|
|
1689
|
+
signer: true,
|
|
1690
|
+
relations: [
|
|
1691
|
+
"operator"
|
|
1692
|
+
]
|
|
1693
|
+
},
|
|
1694
|
+
{
|
|
1695
|
+
name: "payer",
|
|
1647
1696
|
writable: true,
|
|
1648
1697
|
signer: true
|
|
1649
1698
|
},
|
|
@@ -1686,6 +1735,40 @@ var cp_amm_default = {
|
|
|
1686
1735
|
],
|
|
1687
1736
|
args: []
|
|
1688
1737
|
},
|
|
1738
|
+
{
|
|
1739
|
+
name: "dummy_ix",
|
|
1740
|
+
discriminator: [
|
|
1741
|
+
234,
|
|
1742
|
+
95,
|
|
1743
|
+
176,
|
|
1744
|
+
185,
|
|
1745
|
+
7,
|
|
1746
|
+
42,
|
|
1747
|
+
35,
|
|
1748
|
+
159
|
|
1749
|
+
],
|
|
1750
|
+
accounts: [
|
|
1751
|
+
{
|
|
1752
|
+
name: "pod_aligned_fee_time_scheduler"
|
|
1753
|
+
},
|
|
1754
|
+
{
|
|
1755
|
+
name: "pod_aligned_fee_rate_limiter"
|
|
1756
|
+
},
|
|
1757
|
+
{
|
|
1758
|
+
name: "pod_aligned_fee_market_cap_scheduler"
|
|
1759
|
+
}
|
|
1760
|
+
],
|
|
1761
|
+
args: [
|
|
1762
|
+
{
|
|
1763
|
+
name: "_ixs",
|
|
1764
|
+
type: {
|
|
1765
|
+
defined: {
|
|
1766
|
+
name: "DummyParams"
|
|
1767
|
+
}
|
|
1768
|
+
}
|
|
1769
|
+
}
|
|
1770
|
+
]
|
|
1771
|
+
},
|
|
1689
1772
|
{
|
|
1690
1773
|
name: "fund_reward",
|
|
1691
1774
|
discriminator: [
|
|
@@ -3247,8 +3330,14 @@ var cp_amm_default = {
|
|
|
3247
3330
|
writable: true
|
|
3248
3331
|
},
|
|
3249
3332
|
{
|
|
3250
|
-
name: "
|
|
3251
|
-
|
|
3333
|
+
name: "operator"
|
|
3334
|
+
},
|
|
3335
|
+
{
|
|
3336
|
+
name: "whitelisted_address",
|
|
3337
|
+
signer: true,
|
|
3338
|
+
relations: [
|
|
3339
|
+
"operator"
|
|
3340
|
+
]
|
|
3252
3341
|
},
|
|
3253
3342
|
{
|
|
3254
3343
|
name: "event_authority",
|
|
@@ -3628,7 +3717,7 @@ var cp_amm_default = {
|
|
|
3628
3717
|
],
|
|
3629
3718
|
args: [
|
|
3630
3719
|
{
|
|
3631
|
-
name: "
|
|
3720
|
+
name: "_params",
|
|
3632
3721
|
type: {
|
|
3633
3722
|
defined: {
|
|
3634
3723
|
name: "SwapParameters"
|
|
@@ -3769,7 +3858,7 @@ var cp_amm_default = {
|
|
|
3769
3858
|
],
|
|
3770
3859
|
args: [
|
|
3771
3860
|
{
|
|
3772
|
-
name: "
|
|
3861
|
+
name: "_params",
|
|
3773
3862
|
type: {
|
|
3774
3863
|
defined: {
|
|
3775
3864
|
name: "SwapParameters2"
|
|
@@ -3779,16 +3868,16 @@ var cp_amm_default = {
|
|
|
3779
3868
|
]
|
|
3780
3869
|
},
|
|
3781
3870
|
{
|
|
3782
|
-
name: "
|
|
3871
|
+
name: "update_pool_fees",
|
|
3783
3872
|
discriminator: [
|
|
3784
|
-
|
|
3785
|
-
|
|
3786
|
-
|
|
3787
|
-
|
|
3788
|
-
|
|
3789
|
-
|
|
3790
|
-
|
|
3791
|
-
|
|
3873
|
+
118,
|
|
3874
|
+
217,
|
|
3875
|
+
203,
|
|
3876
|
+
179,
|
|
3877
|
+
60,
|
|
3878
|
+
8,
|
|
3879
|
+
70,
|
|
3880
|
+
89
|
|
3792
3881
|
],
|
|
3793
3882
|
accounts: [
|
|
3794
3883
|
{
|
|
@@ -3796,13 +3885,84 @@ var cp_amm_default = {
|
|
|
3796
3885
|
writable: true
|
|
3797
3886
|
},
|
|
3798
3887
|
{
|
|
3799
|
-
name: "
|
|
3800
|
-
signer: true
|
|
3888
|
+
name: "operator"
|
|
3801
3889
|
},
|
|
3802
3890
|
{
|
|
3803
|
-
name: "
|
|
3804
|
-
|
|
3805
|
-
|
|
3891
|
+
name: "whitelisted_address",
|
|
3892
|
+
signer: true,
|
|
3893
|
+
relations: [
|
|
3894
|
+
"operator"
|
|
3895
|
+
]
|
|
3896
|
+
},
|
|
3897
|
+
{
|
|
3898
|
+
name: "event_authority",
|
|
3899
|
+
pda: {
|
|
3900
|
+
seeds: [
|
|
3901
|
+
{
|
|
3902
|
+
kind: "const",
|
|
3903
|
+
value: [
|
|
3904
|
+
95,
|
|
3905
|
+
95,
|
|
3906
|
+
101,
|
|
3907
|
+
118,
|
|
3908
|
+
101,
|
|
3909
|
+
110,
|
|
3910
|
+
116,
|
|
3911
|
+
95,
|
|
3912
|
+
97,
|
|
3913
|
+
117,
|
|
3914
|
+
116,
|
|
3915
|
+
104,
|
|
3916
|
+
111,
|
|
3917
|
+
114,
|
|
3918
|
+
105,
|
|
3919
|
+
116,
|
|
3920
|
+
121
|
|
3921
|
+
]
|
|
3922
|
+
}
|
|
3923
|
+
]
|
|
3924
|
+
}
|
|
3925
|
+
},
|
|
3926
|
+
{
|
|
3927
|
+
name: "program"
|
|
3928
|
+
}
|
|
3929
|
+
],
|
|
3930
|
+
args: [
|
|
3931
|
+
{
|
|
3932
|
+
name: "params",
|
|
3933
|
+
type: {
|
|
3934
|
+
defined: {
|
|
3935
|
+
name: "UpdatePoolFeesParameters"
|
|
3936
|
+
}
|
|
3937
|
+
}
|
|
3938
|
+
}
|
|
3939
|
+
]
|
|
3940
|
+
},
|
|
3941
|
+
{
|
|
3942
|
+
name: "update_reward_duration",
|
|
3943
|
+
discriminator: [
|
|
3944
|
+
138,
|
|
3945
|
+
174,
|
|
3946
|
+
196,
|
|
3947
|
+
169,
|
|
3948
|
+
213,
|
|
3949
|
+
235,
|
|
3950
|
+
254,
|
|
3951
|
+
107
|
|
3952
|
+
],
|
|
3953
|
+
accounts: [
|
|
3954
|
+
{
|
|
3955
|
+
name: "pool",
|
|
3956
|
+
writable: true
|
|
3957
|
+
},
|
|
3958
|
+
{
|
|
3959
|
+
name: "signer",
|
|
3960
|
+
signer: true
|
|
3961
|
+
},
|
|
3962
|
+
{
|
|
3963
|
+
name: "event_authority",
|
|
3964
|
+
pda: {
|
|
3965
|
+
seeds: [
|
|
3806
3966
|
{
|
|
3807
3967
|
kind: "const",
|
|
3808
3968
|
value: [
|
|
@@ -3989,19 +4149,6 @@ var cp_amm_default = {
|
|
|
3989
4149
|
}
|
|
3990
4150
|
],
|
|
3991
4151
|
accounts: [
|
|
3992
|
-
{
|
|
3993
|
-
name: "ClaimFeeOperator",
|
|
3994
|
-
discriminator: [
|
|
3995
|
-
166,
|
|
3996
|
-
48,
|
|
3997
|
-
134,
|
|
3998
|
-
86,
|
|
3999
|
-
34,
|
|
4000
|
-
200,
|
|
4001
|
-
188,
|
|
4002
|
-
150
|
|
4003
|
-
]
|
|
4004
|
-
},
|
|
4005
4152
|
{
|
|
4006
4153
|
name: "Config",
|
|
4007
4154
|
discriminator: [
|
|
@@ -4015,6 +4162,58 @@ var cp_amm_default = {
|
|
|
4015
4162
|
130
|
|
4016
4163
|
]
|
|
4017
4164
|
},
|
|
4165
|
+
{
|
|
4166
|
+
name: "Operator",
|
|
4167
|
+
discriminator: [
|
|
4168
|
+
219,
|
|
4169
|
+
31,
|
|
4170
|
+
188,
|
|
4171
|
+
145,
|
|
4172
|
+
69,
|
|
4173
|
+
139,
|
|
4174
|
+
204,
|
|
4175
|
+
117
|
|
4176
|
+
]
|
|
4177
|
+
},
|
|
4178
|
+
{
|
|
4179
|
+
name: "PodAlignedFeeMarketCapScheduler",
|
|
4180
|
+
discriminator: [
|
|
4181
|
+
251,
|
|
4182
|
+
130,
|
|
4183
|
+
208,
|
|
4184
|
+
253,
|
|
4185
|
+
245,
|
|
4186
|
+
27,
|
|
4187
|
+
145,
|
|
4188
|
+
203
|
|
4189
|
+
]
|
|
4190
|
+
},
|
|
4191
|
+
{
|
|
4192
|
+
name: "PodAlignedFeeRateLimiter",
|
|
4193
|
+
discriminator: [
|
|
4194
|
+
160,
|
|
4195
|
+
219,
|
|
4196
|
+
8,
|
|
4197
|
+
251,
|
|
4198
|
+
179,
|
|
4199
|
+
7,
|
|
4200
|
+
16,
|
|
4201
|
+
117
|
|
4202
|
+
]
|
|
4203
|
+
},
|
|
4204
|
+
{
|
|
4205
|
+
name: "PodAlignedFeeTimeScheduler",
|
|
4206
|
+
discriminator: [
|
|
4207
|
+
239,
|
|
4208
|
+
132,
|
|
4209
|
+
138,
|
|
4210
|
+
213,
|
|
4211
|
+
67,
|
|
4212
|
+
154,
|
|
4213
|
+
130,
|
|
4214
|
+
70
|
|
4215
|
+
]
|
|
4216
|
+
},
|
|
4018
4217
|
{
|
|
4019
4218
|
name: "Pool",
|
|
4020
4219
|
discriminator: [
|
|
@@ -4069,19 +4268,6 @@ var cp_amm_default = {
|
|
|
4069
4268
|
}
|
|
4070
4269
|
],
|
|
4071
4270
|
events: [
|
|
4072
|
-
{
|
|
4073
|
-
name: "EvtAddLiquidity",
|
|
4074
|
-
discriminator: [
|
|
4075
|
-
175,
|
|
4076
|
-
242,
|
|
4077
|
-
8,
|
|
4078
|
-
157,
|
|
4079
|
-
30,
|
|
4080
|
-
247,
|
|
4081
|
-
185,
|
|
4082
|
-
169
|
|
4083
|
-
]
|
|
4084
|
-
},
|
|
4085
4271
|
{
|
|
4086
4272
|
name: "EvtClaimPartnerFee",
|
|
4087
4273
|
discriminator: [
|
|
@@ -4134,19 +4320,6 @@ var cp_amm_default = {
|
|
|
4134
4320
|
231
|
|
4135
4321
|
]
|
|
4136
4322
|
},
|
|
4137
|
-
{
|
|
4138
|
-
name: "EvtCloseClaimFeeOperator",
|
|
4139
|
-
discriminator: [
|
|
4140
|
-
111,
|
|
4141
|
-
39,
|
|
4142
|
-
37,
|
|
4143
|
-
55,
|
|
4144
|
-
110,
|
|
4145
|
-
216,
|
|
4146
|
-
194,
|
|
4147
|
-
23
|
|
4148
|
-
]
|
|
4149
|
-
},
|
|
4150
4323
|
{
|
|
4151
4324
|
name: "EvtCloseConfig",
|
|
4152
4325
|
discriminator: [
|
|
@@ -4173,19 +4346,6 @@ var cp_amm_default = {
|
|
|
4173
4346
|
178
|
|
4174
4347
|
]
|
|
4175
4348
|
},
|
|
4176
|
-
{
|
|
4177
|
-
name: "EvtCreateClaimFeeOperator",
|
|
4178
|
-
discriminator: [
|
|
4179
|
-
21,
|
|
4180
|
-
6,
|
|
4181
|
-
153,
|
|
4182
|
-
120,
|
|
4183
|
-
68,
|
|
4184
|
-
116,
|
|
4185
|
-
28,
|
|
4186
|
-
177
|
|
4187
|
-
]
|
|
4188
|
-
},
|
|
4189
4349
|
{
|
|
4190
4350
|
name: "EvtCreateConfig",
|
|
4191
4351
|
discriminator: [
|
|
@@ -4316,19 +4476,6 @@ var cp_amm_default = {
|
|
|
4316
4476
|
11
|
|
4317
4477
|
]
|
|
4318
4478
|
},
|
|
4319
|
-
{
|
|
4320
|
-
name: "EvtRemoveLiquidity",
|
|
4321
|
-
discriminator: [
|
|
4322
|
-
87,
|
|
4323
|
-
46,
|
|
4324
|
-
88,
|
|
4325
|
-
98,
|
|
4326
|
-
175,
|
|
4327
|
-
96,
|
|
4328
|
-
34,
|
|
4329
|
-
91
|
|
4330
|
-
]
|
|
4331
|
-
},
|
|
4332
4479
|
{
|
|
4333
4480
|
name: "EvtSetPoolStatus",
|
|
4334
4481
|
discriminator: [
|
|
@@ -4355,19 +4502,6 @@ var cp_amm_default = {
|
|
|
4355
4502
|
103
|
|
4356
4503
|
]
|
|
4357
4504
|
},
|
|
4358
|
-
{
|
|
4359
|
-
name: "EvtSwap",
|
|
4360
|
-
discriminator: [
|
|
4361
|
-
27,
|
|
4362
|
-
60,
|
|
4363
|
-
21,
|
|
4364
|
-
213,
|
|
4365
|
-
138,
|
|
4366
|
-
170,
|
|
4367
|
-
187,
|
|
4368
|
-
147
|
|
4369
|
-
]
|
|
4370
|
-
},
|
|
4371
4505
|
{
|
|
4372
4506
|
name: "EvtSwap2",
|
|
4373
4507
|
discriminator: [
|
|
@@ -4381,6 +4515,19 @@ var cp_amm_default = {
|
|
|
4381
4515
|
153
|
|
4382
4516
|
]
|
|
4383
4517
|
},
|
|
4518
|
+
{
|
|
4519
|
+
name: "EvtUpdatePoolFees",
|
|
4520
|
+
discriminator: [
|
|
4521
|
+
76,
|
|
4522
|
+
165,
|
|
4523
|
+
246,
|
|
4524
|
+
102,
|
|
4525
|
+
102,
|
|
4526
|
+
217,
|
|
4527
|
+
156,
|
|
4528
|
+
44
|
|
4529
|
+
]
|
|
4530
|
+
},
|
|
4384
4531
|
{
|
|
4385
4532
|
name: "EvtUpdateRewardDuration",
|
|
4386
4533
|
discriminator: [
|
|
@@ -4674,7 +4821,7 @@ var cp_amm_default = {
|
|
|
4674
4821
|
},
|
|
4675
4822
|
{
|
|
4676
4823
|
code: 6050,
|
|
4677
|
-
name: "
|
|
4824
|
+
name: "InvalidFeeTimeScheduler",
|
|
4678
4825
|
msg: "Invalid fee scheduler"
|
|
4679
4826
|
},
|
|
4680
4827
|
{
|
|
@@ -4686,6 +4833,41 @@ var cp_amm_default = {
|
|
|
4686
4833
|
code: 6052,
|
|
4687
4834
|
name: "InvalidPoolVersion",
|
|
4688
4835
|
msg: "Invalid pool version"
|
|
4836
|
+
},
|
|
4837
|
+
{
|
|
4838
|
+
code: 6053,
|
|
4839
|
+
name: "InvalidAuthority",
|
|
4840
|
+
msg: "Invalid authority to do that action"
|
|
4841
|
+
},
|
|
4842
|
+
{
|
|
4843
|
+
code: 6054,
|
|
4844
|
+
name: "InvalidPermission",
|
|
4845
|
+
msg: "Invalid permission"
|
|
4846
|
+
},
|
|
4847
|
+
{
|
|
4848
|
+
code: 6055,
|
|
4849
|
+
name: "InvalidFeeMarketCapScheduler",
|
|
4850
|
+
msg: "Invalid fee market cap scheduler"
|
|
4851
|
+
},
|
|
4852
|
+
{
|
|
4853
|
+
code: 6056,
|
|
4854
|
+
name: "CannotUpdateBaseFee",
|
|
4855
|
+
msg: "Cannot update base fee"
|
|
4856
|
+
},
|
|
4857
|
+
{
|
|
4858
|
+
code: 6057,
|
|
4859
|
+
name: "InvalidDynamicFeeParameters",
|
|
4860
|
+
msg: "Invalid dynamic fee parameters"
|
|
4861
|
+
},
|
|
4862
|
+
{
|
|
4863
|
+
code: 6058,
|
|
4864
|
+
name: "InvalidUpdatePoolFeesParameters",
|
|
4865
|
+
msg: "Invalid update pool fees parameters"
|
|
4866
|
+
},
|
|
4867
|
+
{
|
|
4868
|
+
code: 6059,
|
|
4869
|
+
name: "MissingOperatorAccount",
|
|
4870
|
+
msg: "Missing operator account"
|
|
4689
4871
|
}
|
|
4690
4872
|
],
|
|
4691
4873
|
types: [
|
|
@@ -4719,7 +4901,7 @@ var cp_amm_default = {
|
|
|
4719
4901
|
}
|
|
4720
4902
|
},
|
|
4721
4903
|
{
|
|
4722
|
-
name: "
|
|
4904
|
+
name: "BaseFeeInfo",
|
|
4723
4905
|
serialization: "bytemuck",
|
|
4724
4906
|
repr: {
|
|
4725
4907
|
kind: "c"
|
|
@@ -4728,38 +4910,13 @@ var cp_amm_default = {
|
|
|
4728
4910
|
kind: "struct",
|
|
4729
4911
|
fields: [
|
|
4730
4912
|
{
|
|
4731
|
-
name: "
|
|
4732
|
-
type: "u64"
|
|
4733
|
-
},
|
|
4734
|
-
{
|
|
4735
|
-
name: "base_fee_mode",
|
|
4736
|
-
type: "u8"
|
|
4737
|
-
},
|
|
4738
|
-
{
|
|
4739
|
-
name: "padding",
|
|
4740
|
-
type: {
|
|
4741
|
-
array: [
|
|
4742
|
-
"u8",
|
|
4743
|
-
5
|
|
4744
|
-
]
|
|
4745
|
-
}
|
|
4746
|
-
},
|
|
4747
|
-
{
|
|
4748
|
-
name: "first_factor",
|
|
4749
|
-
type: "u16"
|
|
4750
|
-
},
|
|
4751
|
-
{
|
|
4752
|
-
name: "second_factor",
|
|
4913
|
+
name: "data",
|
|
4753
4914
|
type: {
|
|
4754
4915
|
array: [
|
|
4755
4916
|
"u8",
|
|
4756
|
-
|
|
4917
|
+
32
|
|
4757
4918
|
]
|
|
4758
4919
|
}
|
|
4759
|
-
},
|
|
4760
|
-
{
|
|
4761
|
-
name: "third_factor",
|
|
4762
|
-
type: "u64"
|
|
4763
4920
|
}
|
|
4764
4921
|
]
|
|
4765
4922
|
}
|
|
@@ -4770,29 +4927,13 @@ var cp_amm_default = {
|
|
|
4770
4927
|
kind: "struct",
|
|
4771
4928
|
fields: [
|
|
4772
4929
|
{
|
|
4773
|
-
name: "
|
|
4774
|
-
type: "u64"
|
|
4775
|
-
},
|
|
4776
|
-
{
|
|
4777
|
-
name: "first_factor",
|
|
4778
|
-
type: "u16"
|
|
4779
|
-
},
|
|
4780
|
-
{
|
|
4781
|
-
name: "second_factor",
|
|
4930
|
+
name: "data",
|
|
4782
4931
|
type: {
|
|
4783
4932
|
array: [
|
|
4784
4933
|
"u8",
|
|
4785
|
-
|
|
4934
|
+
30
|
|
4786
4935
|
]
|
|
4787
4936
|
}
|
|
4788
|
-
},
|
|
4789
|
-
{
|
|
4790
|
-
name: "third_factor",
|
|
4791
|
-
type: "u64"
|
|
4792
|
-
},
|
|
4793
|
-
{
|
|
4794
|
-
name: "base_fee_mode",
|
|
4795
|
-
type: "u8"
|
|
4796
4937
|
}
|
|
4797
4938
|
]
|
|
4798
4939
|
}
|
|
@@ -4803,6 +4944,26 @@ var cp_amm_default = {
|
|
|
4803
4944
|
repr: {
|
|
4804
4945
|
kind: "c"
|
|
4805
4946
|
},
|
|
4947
|
+
type: {
|
|
4948
|
+
kind: "struct",
|
|
4949
|
+
fields: [
|
|
4950
|
+
{
|
|
4951
|
+
name: "base_fee_info",
|
|
4952
|
+
type: {
|
|
4953
|
+
defined: {
|
|
4954
|
+
name: "BaseFeeInfo"
|
|
4955
|
+
}
|
|
4956
|
+
}
|
|
4957
|
+
},
|
|
4958
|
+
{
|
|
4959
|
+
name: "padding_1",
|
|
4960
|
+
type: "u64"
|
|
4961
|
+
}
|
|
4962
|
+
]
|
|
4963
|
+
}
|
|
4964
|
+
},
|
|
4965
|
+
{
|
|
4966
|
+
name: "BorshFeeMarketCapScheduler",
|
|
4806
4967
|
type: {
|
|
4807
4968
|
kind: "struct",
|
|
4808
4969
|
fields: [
|
|
@@ -4811,70 +4972,122 @@ var cp_amm_default = {
|
|
|
4811
4972
|
type: "u64"
|
|
4812
4973
|
},
|
|
4813
4974
|
{
|
|
4814
|
-
name: "
|
|
4815
|
-
type: "
|
|
4975
|
+
name: "number_of_period",
|
|
4976
|
+
type: "u16"
|
|
4816
4977
|
},
|
|
4817
4978
|
{
|
|
4818
|
-
name: "
|
|
4819
|
-
type:
|
|
4820
|
-
array: [
|
|
4821
|
-
"u8",
|
|
4822
|
-
5
|
|
4823
|
-
]
|
|
4824
|
-
}
|
|
4979
|
+
name: "sqrt_price_step_bps",
|
|
4980
|
+
type: "u32"
|
|
4825
4981
|
},
|
|
4826
4982
|
{
|
|
4827
|
-
name: "
|
|
4828
|
-
type: "
|
|
4983
|
+
name: "scheduler_expiration_duration",
|
|
4984
|
+
type: "u32"
|
|
4985
|
+
},
|
|
4986
|
+
{
|
|
4987
|
+
name: "reduction_factor",
|
|
4988
|
+
type: "u64"
|
|
4989
|
+
},
|
|
4990
|
+
{
|
|
4991
|
+
name: "base_fee_mode",
|
|
4992
|
+
type: "u8"
|
|
4829
4993
|
},
|
|
4830
4994
|
{
|
|
4831
|
-
name: "
|
|
4995
|
+
name: "padding",
|
|
4832
4996
|
type: {
|
|
4833
4997
|
array: [
|
|
4834
4998
|
"u8",
|
|
4835
|
-
|
|
4999
|
+
3
|
|
4836
5000
|
]
|
|
4837
5001
|
}
|
|
4838
|
-
}
|
|
5002
|
+
}
|
|
5003
|
+
]
|
|
5004
|
+
}
|
|
5005
|
+
},
|
|
5006
|
+
{
|
|
5007
|
+
name: "BorshFeeRateLimiter",
|
|
5008
|
+
docs: [
|
|
5009
|
+
"we denote reference_amount = x0, cliff_fee_numerator = c, fee_increment = i",
|
|
5010
|
+
"if input_amount <= x0, then fee = input_amount * c",
|
|
5011
|
+
"",
|
|
5012
|
+
"if input_amount > x0, then input_amount = x0 + (a * x0 + b)",
|
|
5013
|
+
"if a < max_index",
|
|
5014
|
+
"then fee = x0 * c + x0 * (c + i) + .... + x0 * (c + i*a) + b * (c + i * (a+1))",
|
|
5015
|
+
"then fee = x0 * (c + c*a + i*a*(a+1)/2) + b * (c + i * (a+1))",
|
|
5016
|
+
"",
|
|
5017
|
+
"if a >= max_index",
|
|
5018
|
+
"if a = max_index + d, input_amount = x0 + max_index * x0 + (d * x0 + b)",
|
|
5019
|
+
"then fee = x0 * (c + c*max_index + i*max_index*(max_index+1)/2) + (d * x0 + b) * MAX_FEE"
|
|
5020
|
+
],
|
|
5021
|
+
type: {
|
|
5022
|
+
kind: "struct",
|
|
5023
|
+
fields: [
|
|
4839
5024
|
{
|
|
4840
|
-
name: "
|
|
5025
|
+
name: "cliff_fee_numerator",
|
|
4841
5026
|
type: "u64"
|
|
4842
5027
|
},
|
|
4843
5028
|
{
|
|
4844
|
-
name: "
|
|
5029
|
+
name: "fee_increment_bps",
|
|
5030
|
+
type: "u16"
|
|
5031
|
+
},
|
|
5032
|
+
{
|
|
5033
|
+
name: "max_limiter_duration",
|
|
5034
|
+
type: "u32"
|
|
5035
|
+
},
|
|
5036
|
+
{
|
|
5037
|
+
name: "max_fee_bps",
|
|
5038
|
+
type: "u32"
|
|
5039
|
+
},
|
|
5040
|
+
{
|
|
5041
|
+
name: "reference_amount",
|
|
4845
5042
|
type: "u64"
|
|
5043
|
+
},
|
|
5044
|
+
{
|
|
5045
|
+
name: "base_fee_mode",
|
|
5046
|
+
type: "u8"
|
|
5047
|
+
},
|
|
5048
|
+
{
|
|
5049
|
+
name: "padding",
|
|
5050
|
+
type: {
|
|
5051
|
+
array: [
|
|
5052
|
+
"u8",
|
|
5053
|
+
3
|
|
5054
|
+
]
|
|
5055
|
+
}
|
|
4846
5056
|
}
|
|
4847
5057
|
]
|
|
4848
5058
|
}
|
|
4849
5059
|
},
|
|
4850
5060
|
{
|
|
4851
|
-
name: "
|
|
4852
|
-
docs: [
|
|
4853
|
-
"Parameter that set by the protocol"
|
|
4854
|
-
],
|
|
4855
|
-
serialization: "bytemuck",
|
|
4856
|
-
repr: {
|
|
4857
|
-
kind: "c"
|
|
4858
|
-
},
|
|
5061
|
+
name: "BorshFeeTimeScheduler",
|
|
4859
5062
|
type: {
|
|
4860
5063
|
kind: "struct",
|
|
4861
5064
|
fields: [
|
|
4862
5065
|
{
|
|
4863
|
-
name: "
|
|
4864
|
-
|
|
4865
|
-
"operator"
|
|
4866
|
-
],
|
|
4867
|
-
type: "pubkey"
|
|
5066
|
+
name: "cliff_fee_numerator",
|
|
5067
|
+
type: "u64"
|
|
4868
5068
|
},
|
|
4869
5069
|
{
|
|
4870
|
-
name: "
|
|
4871
|
-
|
|
4872
|
-
|
|
4873
|
-
|
|
5070
|
+
name: "number_of_period",
|
|
5071
|
+
type: "u16"
|
|
5072
|
+
},
|
|
5073
|
+
{
|
|
5074
|
+
name: "period_frequency",
|
|
5075
|
+
type: "u64"
|
|
5076
|
+
},
|
|
5077
|
+
{
|
|
5078
|
+
name: "reduction_factor",
|
|
5079
|
+
type: "u64"
|
|
5080
|
+
},
|
|
5081
|
+
{
|
|
5082
|
+
name: "base_fee_mode",
|
|
5083
|
+
type: "u8"
|
|
5084
|
+
},
|
|
5085
|
+
{
|
|
5086
|
+
name: "padding",
|
|
4874
5087
|
type: {
|
|
4875
5088
|
array: [
|
|
4876
5089
|
"u8",
|
|
4877
|
-
|
|
5090
|
+
3
|
|
4878
5091
|
]
|
|
4879
5092
|
}
|
|
4880
5093
|
}
|
|
@@ -4985,6 +5198,38 @@ var cp_amm_default = {
|
|
|
4985
5198
|
]
|
|
4986
5199
|
}
|
|
4987
5200
|
},
|
|
5201
|
+
{
|
|
5202
|
+
name: "DummyParams",
|
|
5203
|
+
type: {
|
|
5204
|
+
kind: "struct",
|
|
5205
|
+
fields: [
|
|
5206
|
+
{
|
|
5207
|
+
name: "borsh_fee_time_scheduler_params",
|
|
5208
|
+
type: {
|
|
5209
|
+
defined: {
|
|
5210
|
+
name: "BorshFeeTimeScheduler"
|
|
5211
|
+
}
|
|
5212
|
+
}
|
|
5213
|
+
},
|
|
5214
|
+
{
|
|
5215
|
+
name: "borsh_fee_rate_limiter_params",
|
|
5216
|
+
type: {
|
|
5217
|
+
defined: {
|
|
5218
|
+
name: "BorshFeeRateLimiter"
|
|
5219
|
+
}
|
|
5220
|
+
}
|
|
5221
|
+
},
|
|
5222
|
+
{
|
|
5223
|
+
name: "borsh_fee_market_cap_scheduler_params",
|
|
5224
|
+
type: {
|
|
5225
|
+
defined: {
|
|
5226
|
+
name: "BorshFeeMarketCapScheduler"
|
|
5227
|
+
}
|
|
5228
|
+
}
|
|
5229
|
+
}
|
|
5230
|
+
]
|
|
5231
|
+
}
|
|
5232
|
+
},
|
|
4988
5233
|
{
|
|
4989
5234
|
name: "DynamicConfigParameters",
|
|
4990
5235
|
type: {
|
|
@@ -5164,50 +5409,6 @@ var cp_amm_default = {
|
|
|
5164
5409
|
]
|
|
5165
5410
|
}
|
|
5166
5411
|
},
|
|
5167
|
-
{
|
|
5168
|
-
name: "EvtAddLiquidity",
|
|
5169
|
-
type: {
|
|
5170
|
-
kind: "struct",
|
|
5171
|
-
fields: [
|
|
5172
|
-
{
|
|
5173
|
-
name: "pool",
|
|
5174
|
-
type: "pubkey"
|
|
5175
|
-
},
|
|
5176
|
-
{
|
|
5177
|
-
name: "position",
|
|
5178
|
-
type: "pubkey"
|
|
5179
|
-
},
|
|
5180
|
-
{
|
|
5181
|
-
name: "owner",
|
|
5182
|
-
type: "pubkey"
|
|
5183
|
-
},
|
|
5184
|
-
{
|
|
5185
|
-
name: "params",
|
|
5186
|
-
type: {
|
|
5187
|
-
defined: {
|
|
5188
|
-
name: "AddLiquidityParameters"
|
|
5189
|
-
}
|
|
5190
|
-
}
|
|
5191
|
-
},
|
|
5192
|
-
{
|
|
5193
|
-
name: "token_a_amount",
|
|
5194
|
-
type: "u64"
|
|
5195
|
-
},
|
|
5196
|
-
{
|
|
5197
|
-
name: "token_b_amount",
|
|
5198
|
-
type: "u64"
|
|
5199
|
-
},
|
|
5200
|
-
{
|
|
5201
|
-
name: "total_amount_a",
|
|
5202
|
-
type: "u64"
|
|
5203
|
-
},
|
|
5204
|
-
{
|
|
5205
|
-
name: "total_amount_b",
|
|
5206
|
-
type: "u64"
|
|
5207
|
-
}
|
|
5208
|
-
]
|
|
5209
|
-
}
|
|
5210
|
-
},
|
|
5211
5412
|
{
|
|
5212
5413
|
name: "EvtClaimPartnerFee",
|
|
5213
5414
|
type: {
|
|
@@ -5308,25 +5509,6 @@ var cp_amm_default = {
|
|
|
5308
5509
|
]
|
|
5309
5510
|
}
|
|
5310
5511
|
},
|
|
5311
|
-
{
|
|
5312
|
-
name: "EvtCloseClaimFeeOperator",
|
|
5313
|
-
docs: [
|
|
5314
|
-
"Close claim fee operator"
|
|
5315
|
-
],
|
|
5316
|
-
type: {
|
|
5317
|
-
kind: "struct",
|
|
5318
|
-
fields: [
|
|
5319
|
-
{
|
|
5320
|
-
name: "claim_fee_operator",
|
|
5321
|
-
type: "pubkey"
|
|
5322
|
-
},
|
|
5323
|
-
{
|
|
5324
|
-
name: "operator",
|
|
5325
|
-
type: "pubkey"
|
|
5326
|
-
}
|
|
5327
|
-
]
|
|
5328
|
-
}
|
|
5329
|
-
},
|
|
5330
5512
|
{
|
|
5331
5513
|
name: "EvtCloseConfig",
|
|
5332
5514
|
docs: [
|
|
@@ -5376,21 +5558,6 @@ var cp_amm_default = {
|
|
|
5376
5558
|
]
|
|
5377
5559
|
}
|
|
5378
5560
|
},
|
|
5379
|
-
{
|
|
5380
|
-
name: "EvtCreateClaimFeeOperator",
|
|
5381
|
-
docs: [
|
|
5382
|
-
"Create claim fee operator"
|
|
5383
|
-
],
|
|
5384
|
-
type: {
|
|
5385
|
-
kind: "struct",
|
|
5386
|
-
fields: [
|
|
5387
|
-
{
|
|
5388
|
-
name: "operator",
|
|
5389
|
-
type: "pubkey"
|
|
5390
|
-
}
|
|
5391
|
-
]
|
|
5392
|
-
}
|
|
5393
|
-
},
|
|
5394
5561
|
{
|
|
5395
5562
|
name: "EvtCreateConfig",
|
|
5396
5563
|
docs: [
|
|
@@ -5804,42 +5971,6 @@ var cp_amm_default = {
|
|
|
5804
5971
|
]
|
|
5805
5972
|
}
|
|
5806
5973
|
},
|
|
5807
|
-
{
|
|
5808
|
-
name: "EvtRemoveLiquidity",
|
|
5809
|
-
type: {
|
|
5810
|
-
kind: "struct",
|
|
5811
|
-
fields: [
|
|
5812
|
-
{
|
|
5813
|
-
name: "pool",
|
|
5814
|
-
type: "pubkey"
|
|
5815
|
-
},
|
|
5816
|
-
{
|
|
5817
|
-
name: "position",
|
|
5818
|
-
type: "pubkey"
|
|
5819
|
-
},
|
|
5820
|
-
{
|
|
5821
|
-
name: "owner",
|
|
5822
|
-
type: "pubkey"
|
|
5823
|
-
},
|
|
5824
|
-
{
|
|
5825
|
-
name: "params",
|
|
5826
|
-
type: {
|
|
5827
|
-
defined: {
|
|
5828
|
-
name: "RemoveLiquidityParameters"
|
|
5829
|
-
}
|
|
5830
|
-
}
|
|
5831
|
-
},
|
|
5832
|
-
{
|
|
5833
|
-
name: "token_a_amount",
|
|
5834
|
-
type: "u64"
|
|
5835
|
-
},
|
|
5836
|
-
{
|
|
5837
|
-
name: "token_b_amount",
|
|
5838
|
-
type: "u64"
|
|
5839
|
-
}
|
|
5840
|
-
]
|
|
5841
|
-
}
|
|
5842
|
-
},
|
|
5843
5974
|
{
|
|
5844
5975
|
name: "EvtSetPoolStatus",
|
|
5845
5976
|
type: {
|
|
@@ -5920,50 +6051,6 @@ var cp_amm_default = {
|
|
|
5920
6051
|
]
|
|
5921
6052
|
}
|
|
5922
6053
|
},
|
|
5923
|
-
{
|
|
5924
|
-
name: "EvtSwap",
|
|
5925
|
-
type: {
|
|
5926
|
-
kind: "struct",
|
|
5927
|
-
fields: [
|
|
5928
|
-
{
|
|
5929
|
-
name: "pool",
|
|
5930
|
-
type: "pubkey"
|
|
5931
|
-
},
|
|
5932
|
-
{
|
|
5933
|
-
name: "trade_direction",
|
|
5934
|
-
type: "u8"
|
|
5935
|
-
},
|
|
5936
|
-
{
|
|
5937
|
-
name: "has_referral",
|
|
5938
|
-
type: "bool"
|
|
5939
|
-
},
|
|
5940
|
-
{
|
|
5941
|
-
name: "params",
|
|
5942
|
-
type: {
|
|
5943
|
-
defined: {
|
|
5944
|
-
name: "SwapParameters"
|
|
5945
|
-
}
|
|
5946
|
-
}
|
|
5947
|
-
},
|
|
5948
|
-
{
|
|
5949
|
-
name: "swap_result",
|
|
5950
|
-
type: {
|
|
5951
|
-
defined: {
|
|
5952
|
-
name: "SwapResult"
|
|
5953
|
-
}
|
|
5954
|
-
}
|
|
5955
|
-
},
|
|
5956
|
-
{
|
|
5957
|
-
name: "actual_amount_in",
|
|
5958
|
-
type: "u64"
|
|
5959
|
-
},
|
|
5960
|
-
{
|
|
5961
|
-
name: "current_timestamp",
|
|
5962
|
-
type: "u64"
|
|
5963
|
-
}
|
|
5964
|
-
]
|
|
5965
|
-
}
|
|
5966
|
-
},
|
|
5967
6054
|
{
|
|
5968
6055
|
name: "EvtSwap2",
|
|
5969
6056
|
type: {
|
|
@@ -6028,6 +6115,30 @@ var cp_amm_default = {
|
|
|
6028
6115
|
]
|
|
6029
6116
|
}
|
|
6030
6117
|
},
|
|
6118
|
+
{
|
|
6119
|
+
name: "EvtUpdatePoolFees",
|
|
6120
|
+
type: {
|
|
6121
|
+
kind: "struct",
|
|
6122
|
+
fields: [
|
|
6123
|
+
{
|
|
6124
|
+
name: "pool",
|
|
6125
|
+
type: "pubkey"
|
|
6126
|
+
},
|
|
6127
|
+
{
|
|
6128
|
+
name: "operator",
|
|
6129
|
+
type: "pubkey"
|
|
6130
|
+
},
|
|
6131
|
+
{
|
|
6132
|
+
name: "params",
|
|
6133
|
+
type: {
|
|
6134
|
+
defined: {
|
|
6135
|
+
name: "UpdatePoolFeesParameters"
|
|
6136
|
+
}
|
|
6137
|
+
}
|
|
6138
|
+
}
|
|
6139
|
+
]
|
|
6140
|
+
}
|
|
6141
|
+
},
|
|
6031
6142
|
{
|
|
6032
6143
|
name: "EvtUpdateRewardDuration",
|
|
6033
6144
|
type: {
|
|
@@ -6143,7 +6254,7 @@ var cp_amm_default = {
|
|
|
6143
6254
|
{
|
|
6144
6255
|
name: "sqrt_price",
|
|
6145
6256
|
docs: [
|
|
6146
|
-
"The init price of the pool as a sqrt(token_b/token_a) Q64.64 value"
|
|
6257
|
+
"The init price of the pool as a sqrt(token_b/token_a) Q64.64 value. Market cap fee scheduler minimum price will be derived from this value"
|
|
6147
6258
|
],
|
|
6148
6259
|
type: "u128"
|
|
6149
6260
|
},
|
|
@@ -6174,32 +6285,192 @@ var cp_amm_default = {
|
|
|
6174
6285
|
}
|
|
6175
6286
|
},
|
|
6176
6287
|
{
|
|
6177
|
-
name: "InitializePoolParameters",
|
|
6288
|
+
name: "InitializePoolParameters",
|
|
6289
|
+
type: {
|
|
6290
|
+
kind: "struct",
|
|
6291
|
+
fields: [
|
|
6292
|
+
{
|
|
6293
|
+
name: "liquidity",
|
|
6294
|
+
docs: [
|
|
6295
|
+
"initialize liquidity"
|
|
6296
|
+
],
|
|
6297
|
+
type: "u128"
|
|
6298
|
+
},
|
|
6299
|
+
{
|
|
6300
|
+
name: "sqrt_price",
|
|
6301
|
+
docs: [
|
|
6302
|
+
"The init price of the pool as a sqrt(token_b/token_a) Q64.64 value"
|
|
6303
|
+
],
|
|
6304
|
+
type: "u128"
|
|
6305
|
+
},
|
|
6306
|
+
{
|
|
6307
|
+
name: "activation_point",
|
|
6308
|
+
docs: [
|
|
6309
|
+
"activation point"
|
|
6310
|
+
],
|
|
6311
|
+
type: {
|
|
6312
|
+
option: "u64"
|
|
6313
|
+
}
|
|
6314
|
+
}
|
|
6315
|
+
]
|
|
6316
|
+
}
|
|
6317
|
+
},
|
|
6318
|
+
{
|
|
6319
|
+
name: "Operator",
|
|
6320
|
+
serialization: "bytemuck",
|
|
6321
|
+
repr: {
|
|
6322
|
+
kind: "c"
|
|
6323
|
+
},
|
|
6324
|
+
type: {
|
|
6325
|
+
kind: "struct",
|
|
6326
|
+
fields: [
|
|
6327
|
+
{
|
|
6328
|
+
name: "whitelisted_address",
|
|
6329
|
+
type: "pubkey"
|
|
6330
|
+
},
|
|
6331
|
+
{
|
|
6332
|
+
name: "permission",
|
|
6333
|
+
type: "u128"
|
|
6334
|
+
},
|
|
6335
|
+
{
|
|
6336
|
+
name: "padding",
|
|
6337
|
+
type: {
|
|
6338
|
+
array: [
|
|
6339
|
+
"u64",
|
|
6340
|
+
2
|
|
6341
|
+
]
|
|
6342
|
+
}
|
|
6343
|
+
}
|
|
6344
|
+
]
|
|
6345
|
+
}
|
|
6346
|
+
},
|
|
6347
|
+
{
|
|
6348
|
+
name: "PodAlignedFeeMarketCapScheduler",
|
|
6349
|
+
serialization: "bytemuck",
|
|
6350
|
+
repr: {
|
|
6351
|
+
kind: "c"
|
|
6352
|
+
},
|
|
6353
|
+
type: {
|
|
6354
|
+
kind: "struct",
|
|
6355
|
+
fields: [
|
|
6356
|
+
{
|
|
6357
|
+
name: "cliff_fee_numerator",
|
|
6358
|
+
type: "u64"
|
|
6359
|
+
},
|
|
6360
|
+
{
|
|
6361
|
+
name: "base_fee_mode",
|
|
6362
|
+
type: "u8"
|
|
6363
|
+
},
|
|
6364
|
+
{
|
|
6365
|
+
name: "padding",
|
|
6366
|
+
type: {
|
|
6367
|
+
array: [
|
|
6368
|
+
"u8",
|
|
6369
|
+
5
|
|
6370
|
+
]
|
|
6371
|
+
}
|
|
6372
|
+
},
|
|
6373
|
+
{
|
|
6374
|
+
name: "number_of_period",
|
|
6375
|
+
type: "u16"
|
|
6376
|
+
},
|
|
6377
|
+
{
|
|
6378
|
+
name: "sqrt_price_step_bps",
|
|
6379
|
+
type: "u32"
|
|
6380
|
+
},
|
|
6381
|
+
{
|
|
6382
|
+
name: "scheduler_expiration_duration",
|
|
6383
|
+
type: "u32"
|
|
6384
|
+
},
|
|
6385
|
+
{
|
|
6386
|
+
name: "reduction_factor",
|
|
6387
|
+
type: "u64"
|
|
6388
|
+
}
|
|
6389
|
+
]
|
|
6390
|
+
}
|
|
6391
|
+
},
|
|
6392
|
+
{
|
|
6393
|
+
name: "PodAlignedFeeRateLimiter",
|
|
6394
|
+
serialization: "bytemuck",
|
|
6395
|
+
repr: {
|
|
6396
|
+
kind: "c"
|
|
6397
|
+
},
|
|
6398
|
+
type: {
|
|
6399
|
+
kind: "struct",
|
|
6400
|
+
fields: [
|
|
6401
|
+
{
|
|
6402
|
+
name: "cliff_fee_numerator",
|
|
6403
|
+
type: "u64"
|
|
6404
|
+
},
|
|
6405
|
+
{
|
|
6406
|
+
name: "base_fee_mode",
|
|
6407
|
+
type: "u8"
|
|
6408
|
+
},
|
|
6409
|
+
{
|
|
6410
|
+
name: "padding",
|
|
6411
|
+
type: {
|
|
6412
|
+
array: [
|
|
6413
|
+
"u8",
|
|
6414
|
+
5
|
|
6415
|
+
]
|
|
6416
|
+
}
|
|
6417
|
+
},
|
|
6418
|
+
{
|
|
6419
|
+
name: "fee_increment_bps",
|
|
6420
|
+
type: "u16"
|
|
6421
|
+
},
|
|
6422
|
+
{
|
|
6423
|
+
name: "max_limiter_duration",
|
|
6424
|
+
type: "u32"
|
|
6425
|
+
},
|
|
6426
|
+
{
|
|
6427
|
+
name: "max_fee_bps",
|
|
6428
|
+
type: "u32"
|
|
6429
|
+
},
|
|
6430
|
+
{
|
|
6431
|
+
name: "reference_amount",
|
|
6432
|
+
type: "u64"
|
|
6433
|
+
}
|
|
6434
|
+
]
|
|
6435
|
+
}
|
|
6436
|
+
},
|
|
6437
|
+
{
|
|
6438
|
+
name: "PodAlignedFeeTimeScheduler",
|
|
6439
|
+
serialization: "bytemuck",
|
|
6440
|
+
repr: {
|
|
6441
|
+
kind: "c"
|
|
6442
|
+
},
|
|
6178
6443
|
type: {
|
|
6179
6444
|
kind: "struct",
|
|
6180
6445
|
fields: [
|
|
6181
6446
|
{
|
|
6182
|
-
name: "
|
|
6183
|
-
|
|
6184
|
-
"initialize liquidity"
|
|
6185
|
-
],
|
|
6186
|
-
type: "u128"
|
|
6447
|
+
name: "cliff_fee_numerator",
|
|
6448
|
+
type: "u64"
|
|
6187
6449
|
},
|
|
6188
6450
|
{
|
|
6189
|
-
name: "
|
|
6190
|
-
|
|
6191
|
-
"The init price of the pool as a sqrt(token_b/token_a) Q64.64 value"
|
|
6192
|
-
],
|
|
6193
|
-
type: "u128"
|
|
6451
|
+
name: "base_fee_mode",
|
|
6452
|
+
type: "u8"
|
|
6194
6453
|
},
|
|
6195
6454
|
{
|
|
6196
|
-
name: "
|
|
6197
|
-
docs: [
|
|
6198
|
-
"activation point"
|
|
6199
|
-
],
|
|
6455
|
+
name: "padding",
|
|
6200
6456
|
type: {
|
|
6201
|
-
|
|
6457
|
+
array: [
|
|
6458
|
+
"u8",
|
|
6459
|
+
5
|
|
6460
|
+
]
|
|
6202
6461
|
}
|
|
6462
|
+
},
|
|
6463
|
+
{
|
|
6464
|
+
name: "number_of_period",
|
|
6465
|
+
type: "u16"
|
|
6466
|
+
},
|
|
6467
|
+
{
|
|
6468
|
+
name: "period_frequency",
|
|
6469
|
+
type: "u64"
|
|
6470
|
+
},
|
|
6471
|
+
{
|
|
6472
|
+
name: "reduction_factor",
|
|
6473
|
+
type: "u64"
|
|
6203
6474
|
}
|
|
6204
6475
|
]
|
|
6205
6476
|
}
|
|
@@ -6367,7 +6638,7 @@ var cp_amm_default = {
|
|
|
6367
6638
|
{
|
|
6368
6639
|
name: "collect_fee_mode",
|
|
6369
6640
|
docs: [
|
|
6370
|
-
"0 is collect fee in both token, 1 only collect fee
|
|
6641
|
+
"0 is collect fee in both token, 1 only collect fee only in token b"
|
|
6371
6642
|
],
|
|
6372
6643
|
type: "u8"
|
|
6373
6644
|
},
|
|
@@ -6488,18 +6759,6 @@ var cp_amm_default = {
|
|
|
6488
6759
|
}
|
|
6489
6760
|
}
|
|
6490
6761
|
},
|
|
6491
|
-
{
|
|
6492
|
-
name: "padding",
|
|
6493
|
-
docs: [
|
|
6494
|
-
"padding"
|
|
6495
|
-
],
|
|
6496
|
-
type: {
|
|
6497
|
-
array: [
|
|
6498
|
-
"u8",
|
|
6499
|
-
3
|
|
6500
|
-
]
|
|
6501
|
-
}
|
|
6502
|
-
},
|
|
6503
6762
|
{
|
|
6504
6763
|
name: "dynamic_fee",
|
|
6505
6764
|
docs: [
|
|
@@ -6529,7 +6788,7 @@ var cp_amm_default = {
|
|
|
6529
6788
|
name: "base_fee",
|
|
6530
6789
|
type: {
|
|
6531
6790
|
defined: {
|
|
6532
|
-
name: "
|
|
6791
|
+
name: "BaseFeeInfo"
|
|
6533
6792
|
}
|
|
6534
6793
|
}
|
|
6535
6794
|
},
|
|
@@ -6651,16 +6910,8 @@ var cp_amm_default = {
|
|
|
6651
6910
|
}
|
|
6652
6911
|
},
|
|
6653
6912
|
{
|
|
6654
|
-
name: "
|
|
6655
|
-
|
|
6656
|
-
"padding"
|
|
6657
|
-
],
|
|
6658
|
-
type: {
|
|
6659
|
-
array: [
|
|
6660
|
-
"u64",
|
|
6661
|
-
2
|
|
6662
|
-
]
|
|
6663
|
-
}
|
|
6913
|
+
name: "init_sqrt_price",
|
|
6914
|
+
type: "u128"
|
|
6664
6915
|
}
|
|
6665
6916
|
]
|
|
6666
6917
|
}
|
|
@@ -7240,41 +7491,6 @@ var cp_amm_default = {
|
|
|
7240
7491
|
]
|
|
7241
7492
|
}
|
|
7242
7493
|
},
|
|
7243
|
-
{
|
|
7244
|
-
name: "SwapResult",
|
|
7245
|
-
docs: [
|
|
7246
|
-
"Encodes all results of swapping"
|
|
7247
|
-
],
|
|
7248
|
-
type: {
|
|
7249
|
-
kind: "struct",
|
|
7250
|
-
fields: [
|
|
7251
|
-
{
|
|
7252
|
-
name: "output_amount",
|
|
7253
|
-
type: "u64"
|
|
7254
|
-
},
|
|
7255
|
-
{
|
|
7256
|
-
name: "next_sqrt_price",
|
|
7257
|
-
type: "u128"
|
|
7258
|
-
},
|
|
7259
|
-
{
|
|
7260
|
-
name: "lp_fee",
|
|
7261
|
-
type: "u64"
|
|
7262
|
-
},
|
|
7263
|
-
{
|
|
7264
|
-
name: "protocol_fee",
|
|
7265
|
-
type: "u64"
|
|
7266
|
-
},
|
|
7267
|
-
{
|
|
7268
|
-
name: "partner_fee",
|
|
7269
|
-
type: "u64"
|
|
7270
|
-
},
|
|
7271
|
-
{
|
|
7272
|
-
name: "referral_fee",
|
|
7273
|
-
type: "u64"
|
|
7274
|
-
}
|
|
7275
|
-
]
|
|
7276
|
-
}
|
|
7277
|
-
},
|
|
7278
7494
|
{
|
|
7279
7495
|
name: "SwapResult2",
|
|
7280
7496
|
type: {
|
|
@@ -7353,6 +7569,41 @@ var cp_amm_default = {
|
|
|
7353
7569
|
]
|
|
7354
7570
|
}
|
|
7355
7571
|
},
|
|
7572
|
+
{
|
|
7573
|
+
name: "UpdatePoolFeesParameters",
|
|
7574
|
+
type: {
|
|
7575
|
+
kind: "struct",
|
|
7576
|
+
fields: [
|
|
7577
|
+
{
|
|
7578
|
+
name: "cliff_fee_numerator",
|
|
7579
|
+
docs: [
|
|
7580
|
+
"Base fee update mode:",
|
|
7581
|
+
"- None: skip base fee update",
|
|
7582
|
+
"- Some: update new cliff_fee_numerator if base fee is static"
|
|
7583
|
+
],
|
|
7584
|
+
type: {
|
|
7585
|
+
option: "u64"
|
|
7586
|
+
}
|
|
7587
|
+
},
|
|
7588
|
+
{
|
|
7589
|
+
name: "dynamic_fee",
|
|
7590
|
+
docs: [
|
|
7591
|
+
"Dynamic fee update mode:",
|
|
7592
|
+
"- None: skip dynamic fee update",
|
|
7593
|
+
"- Some(with default value): disable dynamic fee",
|
|
7594
|
+
"- Some(with non default value): enable dynamic fee if disabled or update dynamic fee if enabled"
|
|
7595
|
+
],
|
|
7596
|
+
type: {
|
|
7597
|
+
option: {
|
|
7598
|
+
defined: {
|
|
7599
|
+
name: "DynamicFeeParameters"
|
|
7600
|
+
}
|
|
7601
|
+
}
|
|
7602
|
+
}
|
|
7603
|
+
}
|
|
7604
|
+
]
|
|
7605
|
+
}
|
|
7606
|
+
},
|
|
7356
7607
|
{
|
|
7357
7608
|
name: "UserRewardInfo",
|
|
7358
7609
|
serialization: "bytemuck",
|
|
@@ -7479,6 +7730,94 @@ var cp_amm_default = {
|
|
|
7479
7730
|
]
|
|
7480
7731
|
}
|
|
7481
7732
|
}
|
|
7733
|
+
],
|
|
7734
|
+
constants: [
|
|
7735
|
+
{
|
|
7736
|
+
name: "BIN_STEP_BPS_DEFAULT",
|
|
7737
|
+
type: "u16",
|
|
7738
|
+
value: "1"
|
|
7739
|
+
},
|
|
7740
|
+
{
|
|
7741
|
+
name: "BIN_STEP_U128_DEFAULT_LE_BYTES",
|
|
7742
|
+
type: {
|
|
7743
|
+
array: [
|
|
7744
|
+
"u8",
|
|
7745
|
+
16
|
|
7746
|
+
]
|
|
7747
|
+
},
|
|
7748
|
+
value: "[203, 16, 199, 186, 184, 141, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0]"
|
|
7749
|
+
},
|
|
7750
|
+
{
|
|
7751
|
+
name: "CUSTOMIZABLE_POOL_PREFIX",
|
|
7752
|
+
type: "bytes",
|
|
7753
|
+
value: "[99, 112, 111, 111, 108]"
|
|
7754
|
+
},
|
|
7755
|
+
{
|
|
7756
|
+
name: "FEE_DENOMINATOR",
|
|
7757
|
+
docs: [
|
|
7758
|
+
"Default fee denominator. DO NOT simply update it as it will break logic that depends on it as default value."
|
|
7759
|
+
],
|
|
7760
|
+
type: "u64",
|
|
7761
|
+
value: "1000000000"
|
|
7762
|
+
},
|
|
7763
|
+
{
|
|
7764
|
+
name: "MAX_BASIS_POINT",
|
|
7765
|
+
docs: [
|
|
7766
|
+
"Max basis point. 100% in pct"
|
|
7767
|
+
],
|
|
7768
|
+
type: "u64",
|
|
7769
|
+
value: "10000"
|
|
7770
|
+
},
|
|
7771
|
+
{
|
|
7772
|
+
name: "MAX_SQRT_PRICE_LE_BYTES",
|
|
7773
|
+
type: {
|
|
7774
|
+
array: [
|
|
7775
|
+
"u8",
|
|
7776
|
+
16
|
|
7777
|
+
]
|
|
7778
|
+
},
|
|
7779
|
+
value: "[155, 87, 105, 78, 169, 26, 92, 132, 177, 196, 254, 255, 0, 0, 0, 0]"
|
|
7780
|
+
},
|
|
7781
|
+
{
|
|
7782
|
+
name: "MIN_SQRT_PRICE_LE_BYTES",
|
|
7783
|
+
type: {
|
|
7784
|
+
array: [
|
|
7785
|
+
"u8",
|
|
7786
|
+
16
|
|
7787
|
+
]
|
|
7788
|
+
},
|
|
7789
|
+
value: "[80, 59, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]"
|
|
7790
|
+
},
|
|
7791
|
+
{
|
|
7792
|
+
name: "POOL_AUTHORITY_PREFIX",
|
|
7793
|
+
type: "bytes",
|
|
7794
|
+
value: "[112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121]"
|
|
7795
|
+
},
|
|
7796
|
+
{
|
|
7797
|
+
name: "POOL_PREFIX",
|
|
7798
|
+
type: "bytes",
|
|
7799
|
+
value: "[112, 111, 111, 108]"
|
|
7800
|
+
},
|
|
7801
|
+
{
|
|
7802
|
+
name: "POSITION_NFT_ACCOUNT_PREFIX",
|
|
7803
|
+
type: "bytes",
|
|
7804
|
+
value: "[112, 111, 115, 105, 116, 105, 111, 110, 95, 110, 102, 116, 95, 97, 99, 99, 111, 117, 110, 116]"
|
|
7805
|
+
},
|
|
7806
|
+
{
|
|
7807
|
+
name: "POSITION_PREFIX",
|
|
7808
|
+
type: "bytes",
|
|
7809
|
+
value: "[112, 111, 115, 105, 116, 105, 111, 110]"
|
|
7810
|
+
},
|
|
7811
|
+
{
|
|
7812
|
+
name: "SPLIT_POSITION_DENOMINATOR",
|
|
7813
|
+
type: "u32",
|
|
7814
|
+
value: "1000000000"
|
|
7815
|
+
},
|
|
7816
|
+
{
|
|
7817
|
+
name: "TOKEN_VAULT_PREFIX",
|
|
7818
|
+
type: "bytes",
|
|
7819
|
+
value: "[116, 111, 107, 101, 110, 95, 118, 97, 117, 108, 116]"
|
|
7820
|
+
}
|
|
7482
7821
|
]
|
|
7483
7822
|
};
|
|
7484
7823
|
|
|
@@ -7501,9 +7840,11 @@ var ActivationPoint = /* @__PURE__ */ ((ActivationPoint2) => {
|
|
|
7501
7840
|
return ActivationPoint2;
|
|
7502
7841
|
})(ActivationPoint || {});
|
|
7503
7842
|
var BaseFeeMode = /* @__PURE__ */ ((BaseFeeMode3) => {
|
|
7504
|
-
BaseFeeMode3[BaseFeeMode3["
|
|
7505
|
-
BaseFeeMode3[BaseFeeMode3["
|
|
7843
|
+
BaseFeeMode3[BaseFeeMode3["FeeTimeSchedulerLinear"] = 0] = "FeeTimeSchedulerLinear";
|
|
7844
|
+
BaseFeeMode3[BaseFeeMode3["FeeTimeSchedulerExponential"] = 1] = "FeeTimeSchedulerExponential";
|
|
7506
7845
|
BaseFeeMode3[BaseFeeMode3["RateLimiter"] = 2] = "RateLimiter";
|
|
7846
|
+
BaseFeeMode3[BaseFeeMode3["FeeMarketCapSchedulerLinear"] = 3] = "FeeMarketCapSchedulerLinear";
|
|
7847
|
+
BaseFeeMode3[BaseFeeMode3["FeeMarketCapSchedulerExponential"] = 4] = "FeeMarketCapSchedulerExponential";
|
|
7507
7848
|
return BaseFeeMode3;
|
|
7508
7849
|
})(BaseFeeMode || {});
|
|
7509
7850
|
var CollectFeeMode = /* @__PURE__ */ ((CollectFeeMode3) => {
|
|
@@ -7521,10 +7862,10 @@ var ActivationType = /* @__PURE__ */ ((ActivationType3) => {
|
|
|
7521
7862
|
ActivationType3[ActivationType3["Timestamp"] = 1] = "Timestamp";
|
|
7522
7863
|
return ActivationType3;
|
|
7523
7864
|
})(ActivationType || {});
|
|
7524
|
-
var PoolVersion = /* @__PURE__ */ ((
|
|
7525
|
-
|
|
7526
|
-
|
|
7527
|
-
return
|
|
7865
|
+
var PoolVersion = /* @__PURE__ */ ((PoolVersion4) => {
|
|
7866
|
+
PoolVersion4[PoolVersion4["V0"] = 0] = "V0";
|
|
7867
|
+
PoolVersion4[PoolVersion4["V1"] = 1] = "V1";
|
|
7868
|
+
return PoolVersion4;
|
|
7528
7869
|
})(PoolVersion || {});
|
|
7529
7870
|
var PoolStatus = /* @__PURE__ */ ((PoolStatus2) => {
|
|
7530
7871
|
PoolStatus2[PoolStatus2["Enable"] = 0] = "Enable";
|
|
@@ -7578,7 +7919,8 @@ var U16_MAX = 65535;
|
|
|
7578
7919
|
var MAX_RATE_LIMITER_DURATION_IN_SECONDS = 43200;
|
|
7579
7920
|
var MAX_RATE_LIMITER_DURATION_IN_SLOTS = 108e3;
|
|
7580
7921
|
var SPLIT_POSITION_DENOMINATOR = 1e9;
|
|
7581
|
-
var CURRENT_POOL_VERSION =
|
|
7922
|
+
var CURRENT_POOL_VERSION = 1 /* V1 */;
|
|
7923
|
+
var FEE_PADDING = Array.from(Buffer.alloc(3));
|
|
7582
7924
|
|
|
7583
7925
|
// src/pda.ts
|
|
7584
7926
|
function getFirstKey(key1, key2) {
|
|
@@ -7666,6 +8008,12 @@ function derivePositionNftAccount(positionNftMint) {
|
|
|
7666
8008
|
CP_AMM_PROGRAM_ID
|
|
7667
8009
|
)[0];
|
|
7668
8010
|
}
|
|
8011
|
+
function deriveOperatorAddress(whitelistedAddress) {
|
|
8012
|
+
return PublicKey2.findProgramAddressSync(
|
|
8013
|
+
[Buffer.from("operator"), whitelistedAddress.toBuffer()],
|
|
8014
|
+
CP_AMM_PROGRAM_ID
|
|
8015
|
+
)[0];
|
|
8016
|
+
}
|
|
7669
8017
|
|
|
7670
8018
|
// src/helpers/token.ts
|
|
7671
8019
|
import { bs58 } from "@coral-xyz/anchor/dist/cjs/utils/bytes";
|
|
@@ -8100,7 +8448,8 @@ import {
|
|
|
8100
8448
|
calculateFee,
|
|
8101
8449
|
getEpochFee,
|
|
8102
8450
|
getTransferFeeConfig,
|
|
8103
|
-
MAX_FEE_BASIS_POINTS
|
|
8451
|
+
MAX_FEE_BASIS_POINTS,
|
|
8452
|
+
TOKEN_2022_PROGRAM_ID as TOKEN_2022_PROGRAM_ID2
|
|
8104
8453
|
} from "@solana/spl-token";
|
|
8105
8454
|
function calculatePreFeeAmount(transferFee, postFeeAmount) {
|
|
8106
8455
|
if (postFeeAmount.isZero()) {
|
|
@@ -8175,6 +8524,61 @@ function calculateTransferFeeExcludedAmount(transferFeeIncludedAmount, mint, cur
|
|
|
8175
8524
|
transferFee: new BN3(transferFee.toString())
|
|
8176
8525
|
};
|
|
8177
8526
|
}
|
|
8527
|
+
function hasTransferHookExtension(connection, mint) {
|
|
8528
|
+
return __async(this, null, function* () {
|
|
8529
|
+
try {
|
|
8530
|
+
const mintAccountInfo = yield connection.getAccountInfo(mint);
|
|
8531
|
+
if (!mintAccountInfo) {
|
|
8532
|
+
return { hasTransferHook: false };
|
|
8533
|
+
}
|
|
8534
|
+
const isToken2022 = mintAccountInfo.owner.equals(TOKEN_2022_PROGRAM_ID2);
|
|
8535
|
+
if (!isToken2022) {
|
|
8536
|
+
return { hasTransferHook: false };
|
|
8537
|
+
}
|
|
8538
|
+
const parsedInfo = yield connection.getParsedAccountInfo(mint);
|
|
8539
|
+
if (parsedInfo.value && "parsed" in parsedInfo.value.data) {
|
|
8540
|
+
const parsedData = parsedInfo.value.data.parsed;
|
|
8541
|
+
if (parsedData && parsedData.info && parsedData.info.extensions) {
|
|
8542
|
+
const extensions = parsedData.info.extensions;
|
|
8543
|
+
const transferHookExtension = extensions.find(
|
|
8544
|
+
(ext) => ext.extension === "transferHook"
|
|
8545
|
+
);
|
|
8546
|
+
if (transferHookExtension && transferHookExtension.state) {
|
|
8547
|
+
return {
|
|
8548
|
+
hasTransferHook: true,
|
|
8549
|
+
transferHookState: {
|
|
8550
|
+
authority: transferHookExtension.state.authority,
|
|
8551
|
+
programId: transferHookExtension.state.programId
|
|
8552
|
+
}
|
|
8553
|
+
};
|
|
8554
|
+
}
|
|
8555
|
+
}
|
|
8556
|
+
}
|
|
8557
|
+
return { hasTransferHook: false };
|
|
8558
|
+
} catch (error) {
|
|
8559
|
+
return { hasTransferHook: false };
|
|
8560
|
+
}
|
|
8561
|
+
});
|
|
8562
|
+
}
|
|
8563
|
+
function validateNoTransferHook(connection, tokenAMint, tokenBMint) {
|
|
8564
|
+
return __async(this, null, function* () {
|
|
8565
|
+
var _a, _b;
|
|
8566
|
+
const [tokenACheck, tokenBCheck] = yield Promise.all([
|
|
8567
|
+
hasTransferHookExtension(connection, tokenAMint),
|
|
8568
|
+
hasTransferHookExtension(connection, tokenBMint)
|
|
8569
|
+
]);
|
|
8570
|
+
if (tokenACheck.hasTransferHook) {
|
|
8571
|
+
throw new Error(
|
|
8572
|
+
`Token A (${tokenAMint.toBase58()}) has a transfer hook extension. Transfer hook might prevent permissionless pool creation. Transfer hook program: ${(_a = tokenACheck.transferHookState) == null ? void 0 : _a.programId}`
|
|
8573
|
+
);
|
|
8574
|
+
}
|
|
8575
|
+
if (tokenBCheck.hasTransferHook) {
|
|
8576
|
+
throw new Error(
|
|
8577
|
+
`Token B (${tokenBMint.toBase58()}) has a transfer hook extension. Transfer hook might prevent permissionless pool creation. Transfer hook program: ${(_b = tokenBCheck.transferHookState) == null ? void 0 : _b.programId}`
|
|
8578
|
+
);
|
|
8579
|
+
}
|
|
8580
|
+
});
|
|
8581
|
+
}
|
|
8178
8582
|
|
|
8179
8583
|
// src/helpers/vestings.ts
|
|
8180
8584
|
import { BN as BN4 } from "@coral-xyz/anchor";
|
|
@@ -8218,10 +8622,10 @@ function getAvailableVestingLiquidity(vestingData, currentPoint) {
|
|
|
8218
8622
|
}
|
|
8219
8623
|
|
|
8220
8624
|
// src/helpers/validation.ts
|
|
8221
|
-
import
|
|
8625
|
+
import BN16 from "bn.js";
|
|
8222
8626
|
|
|
8223
8627
|
// src/math/poolFees/baseFee.ts
|
|
8224
|
-
import
|
|
8628
|
+
import BN11 from "bn.js";
|
|
8225
8629
|
|
|
8226
8630
|
// src/math/poolFees/rateLimiter.ts
|
|
8227
8631
|
import BN7 from "bn.js";
|
|
@@ -8420,35 +8824,33 @@ function getTotalFeeNumerator(poolFees, baseFeeNumerator, maxFeeNumerator) {
|
|
|
8420
8824
|
const totalFeeNumerator = dynamicFeeNumerator.add(baseFeeNumerator);
|
|
8421
8825
|
return BN6.min(totalFeeNumerator, maxFeeNumerator);
|
|
8422
8826
|
}
|
|
8423
|
-
function getTotalTradingFeeFromIncludedFeeAmount(poolFees, currentPoint, activationPoint, includedFeeAmount, tradeDirection, maxFeeNumerator) {
|
|
8827
|
+
function getTotalTradingFeeFromIncludedFeeAmount(program, poolFees, currentPoint, activationPoint, includedFeeAmount, tradeDirection, maxFeeNumerator, initSqrtPrice, currentSqrtPrice) {
|
|
8424
8828
|
const baseFeeHandler = getBaseFeeHandler(
|
|
8425
|
-
|
|
8426
|
-
poolFees.baseFee.
|
|
8427
|
-
poolFees.baseFee.secondFactor,
|
|
8428
|
-
poolFees.baseFee.thirdFactor,
|
|
8429
|
-
poolFees.baseFee.baseFeeMode
|
|
8829
|
+
program,
|
|
8830
|
+
poolFees.baseFee.baseFeeInfo.data
|
|
8430
8831
|
);
|
|
8431
8832
|
const baseFeeNumerator = baseFeeHandler.getBaseFeeNumeratorFromIncludedFeeAmount(
|
|
8432
8833
|
currentPoint,
|
|
8433
8834
|
activationPoint,
|
|
8434
8835
|
tradeDirection,
|
|
8435
|
-
includedFeeAmount
|
|
8836
|
+
includedFeeAmount,
|
|
8837
|
+
initSqrtPrice,
|
|
8838
|
+
currentSqrtPrice
|
|
8436
8839
|
);
|
|
8437
8840
|
return getTotalFeeNumerator(poolFees, baseFeeNumerator, maxFeeNumerator);
|
|
8438
8841
|
}
|
|
8439
|
-
function getTotalTradingFeeFromExcludedFeeAmount(poolFees, currentPoint, activationPoint, excludedFeeAmount, tradeDirection, maxFeeNumerator) {
|
|
8842
|
+
function getTotalTradingFeeFromExcludedFeeAmount(program, poolFees, currentPoint, activationPoint, excludedFeeAmount, tradeDirection, maxFeeNumerator, initSqrtPrice, currentSqrtPrice) {
|
|
8440
8843
|
const baseFeeHandler = getBaseFeeHandler(
|
|
8441
|
-
|
|
8442
|
-
poolFees.baseFee.
|
|
8443
|
-
poolFees.baseFee.secondFactor,
|
|
8444
|
-
poolFees.baseFee.thirdFactor,
|
|
8445
|
-
poolFees.baseFee.baseFeeMode
|
|
8844
|
+
program,
|
|
8845
|
+
poolFees.baseFee.baseFeeInfo.data
|
|
8446
8846
|
);
|
|
8447
8847
|
const baseFeeNumerator = baseFeeHandler.getBaseFeeNumeratorFromExcludedFeeAmount(
|
|
8448
8848
|
currentPoint,
|
|
8449
8849
|
activationPoint,
|
|
8450
8850
|
tradeDirection,
|
|
8451
|
-
excludedFeeAmount
|
|
8851
|
+
excludedFeeAmount,
|
|
8852
|
+
initSqrtPrice,
|
|
8853
|
+
currentSqrtPrice
|
|
8452
8854
|
);
|
|
8453
8855
|
return getTotalFeeNumerator(poolFees, baseFeeNumerator, maxFeeNumerator);
|
|
8454
8856
|
}
|
|
@@ -8763,31 +9165,120 @@ function getFeeNumeratorFromExcludedFeeAmount(excludedFeeAmount, referenceAmount
|
|
|
8763
9165
|
if (feeNumerator.lt(cliffFeeNumerator)) {
|
|
8764
9166
|
throw new Error("feeNumerator is less than cliffFeeNumerator");
|
|
8765
9167
|
}
|
|
8766
|
-
return feeNumerator;
|
|
8767
|
-
}
|
|
8768
|
-
|
|
8769
|
-
// src/math/poolFees/
|
|
8770
|
-
import
|
|
8771
|
-
|
|
8772
|
-
|
|
9168
|
+
return feeNumerator;
|
|
9169
|
+
}
|
|
9170
|
+
|
|
9171
|
+
// src/math/poolFees/feeTimeScheduler.ts
|
|
9172
|
+
import BN9 from "bn.js";
|
|
9173
|
+
|
|
9174
|
+
// src/math/poolFees/feeScheduler.ts
|
|
9175
|
+
import BN8 from "bn.js";
|
|
9176
|
+
function getFeeNumeratorOnLinearFeeScheduler(cliffFeeNumerator, reductionFactor, period) {
|
|
9177
|
+
const reduction = new BN8(period).mul(reductionFactor);
|
|
9178
|
+
return cliffFeeNumerator.sub(reduction);
|
|
9179
|
+
}
|
|
9180
|
+
function getFeeNumeratorOnExponentialFeeScheduler(cliffFeeNumerator, reductionFactor, period) {
|
|
9181
|
+
if (period === 0) {
|
|
9182
|
+
return cliffFeeNumerator;
|
|
9183
|
+
}
|
|
9184
|
+
const basisPointMax = new BN8(BASIS_POINT_MAX);
|
|
9185
|
+
const bps = new BN8(reductionFactor).shln(64).div(basisPointMax);
|
|
9186
|
+
const base = ONE_Q64.sub(bps);
|
|
9187
|
+
const result = pow(base, new BN8(period));
|
|
9188
|
+
return cliffFeeNumerator.mul(result).div(ONE_Q64);
|
|
9189
|
+
}
|
|
9190
|
+
function getMaxBaseFeeNumerator(cliffFeeNumerator) {
|
|
9191
|
+
return cliffFeeNumerator;
|
|
9192
|
+
}
|
|
9193
|
+
|
|
9194
|
+
// src/math/poolFees/feeTimeScheduler.ts
|
|
9195
|
+
function toPodAlignedFeeTimeScheduler(borshFeeScheduler) {
|
|
9196
|
+
return {
|
|
9197
|
+
cliffFeeNumerator: borshFeeScheduler.cliffFeeNumerator,
|
|
9198
|
+
baseFeeMode: borshFeeScheduler.baseFeeMode,
|
|
9199
|
+
padding: new Array(16).fill(0),
|
|
9200
|
+
// Assumes default/rust alignment of 16
|
|
9201
|
+
numberOfPeriod: borshFeeScheduler.numberOfPeriod,
|
|
9202
|
+
periodFrequency: borshFeeScheduler.periodFrequency,
|
|
9203
|
+
reductionFactor: borshFeeScheduler.reductionFactor
|
|
9204
|
+
};
|
|
9205
|
+
}
|
|
9206
|
+
function toBorshFeeTimeScheduler(podAlignedFeeScheduler) {
|
|
9207
|
+
return {
|
|
9208
|
+
cliffFeeNumerator: podAlignedFeeScheduler.cliffFeeNumerator,
|
|
9209
|
+
numberOfPeriod: podAlignedFeeScheduler.numberOfPeriod,
|
|
9210
|
+
periodFrequency: podAlignedFeeScheduler.periodFrequency,
|
|
9211
|
+
reductionFactor: podAlignedFeeScheduler.reductionFactor,
|
|
9212
|
+
baseFeeMode: podAlignedFeeScheduler.baseFeeMode,
|
|
9213
|
+
padding: new Array(16).fill(0)
|
|
9214
|
+
// Assumes default/rust alignment of 16
|
|
9215
|
+
};
|
|
9216
|
+
}
|
|
9217
|
+
function getFeeTimeBaseFeeNumeratorByPeriod(cliffFeeNumerator, numberOfPeriod, period, reductionFactor, feeTimeSchedulerMode) {
|
|
9218
|
+
const periodValue = BN9.min(period, new BN9(numberOfPeriod));
|
|
9219
|
+
const periodNumber = periodValue.toNumber();
|
|
9220
|
+
if (periodNumber > U16_MAX) {
|
|
9221
|
+
throw new Error("Math overflow");
|
|
9222
|
+
}
|
|
9223
|
+
switch (feeTimeSchedulerMode) {
|
|
9224
|
+
case 0 /* FeeTimeSchedulerLinear */: {
|
|
9225
|
+
const feeNumerator = getFeeNumeratorOnLinearFeeScheduler(
|
|
9226
|
+
cliffFeeNumerator,
|
|
9227
|
+
reductionFactor,
|
|
9228
|
+
periodNumber
|
|
9229
|
+
);
|
|
9230
|
+
return feeNumerator;
|
|
9231
|
+
}
|
|
9232
|
+
case 1 /* FeeTimeSchedulerExponential */: {
|
|
9233
|
+
const feeNumerator = getFeeNumeratorOnExponentialFeeScheduler(
|
|
9234
|
+
cliffFeeNumerator,
|
|
9235
|
+
reductionFactor,
|
|
9236
|
+
periodNumber
|
|
9237
|
+
);
|
|
9238
|
+
return feeNumerator;
|
|
9239
|
+
}
|
|
9240
|
+
default:
|
|
9241
|
+
throw new Error("Invalid fee time scheduler mode");
|
|
9242
|
+
}
|
|
9243
|
+
}
|
|
9244
|
+
function getFeeTimeBaseFeeNumerator(cliffFeeNumerator, numberOfPeriod, periodFrequency, reductionFactor, feeTimeSchedulerMode, currentPoint, activationPoint) {
|
|
9245
|
+
if (periodFrequency.isZero()) {
|
|
9246
|
+
return cliffFeeNumerator;
|
|
9247
|
+
}
|
|
9248
|
+
let period;
|
|
9249
|
+
if (currentPoint.lt(activationPoint)) {
|
|
9250
|
+
period = new BN9(numberOfPeriod);
|
|
9251
|
+
} else {
|
|
9252
|
+
period = currentPoint.sub(activationPoint).div(periodFrequency);
|
|
9253
|
+
if (period.gt(new BN9(numberOfPeriod))) {
|
|
9254
|
+
period = new BN9(numberOfPeriod);
|
|
9255
|
+
}
|
|
9256
|
+
}
|
|
9257
|
+
return getFeeTimeBaseFeeNumeratorByPeriod(
|
|
9258
|
+
cliffFeeNumerator,
|
|
9259
|
+
numberOfPeriod,
|
|
9260
|
+
period,
|
|
9261
|
+
reductionFactor,
|
|
9262
|
+
feeTimeSchedulerMode
|
|
9263
|
+
);
|
|
8773
9264
|
}
|
|
8774
|
-
function
|
|
8775
|
-
return
|
|
9265
|
+
function getFeeTimeMinBaseFeeNumerator(cliffFeeNumerator, numberOfPeriod, reductionFactor, feeTimeSchedulerMode) {
|
|
9266
|
+
return getFeeTimeBaseFeeNumeratorByPeriod(
|
|
8776
9267
|
cliffFeeNumerator,
|
|
8777
9268
|
numberOfPeriod,
|
|
8778
|
-
new
|
|
9269
|
+
new BN9(numberOfPeriod),
|
|
8779
9270
|
reductionFactor,
|
|
8780
|
-
|
|
9271
|
+
feeTimeSchedulerMode
|
|
8781
9272
|
);
|
|
8782
9273
|
}
|
|
8783
|
-
|
|
8784
|
-
|
|
9274
|
+
|
|
9275
|
+
// src/math/poolFees/feeMarketCapScheduler.ts
|
|
9276
|
+
import BN10 from "bn.js";
|
|
9277
|
+
function getFeeMarketCapBaseFeeNumeratorByPeriod(cliffFeeNumerator, numberOfPeriod, period, reductionFactor, feeMarketCapSchedulerMode) {
|
|
9278
|
+
const periodValue = BN10.min(period, new BN10(numberOfPeriod));
|
|
8785
9279
|
const periodNumber = periodValue.toNumber();
|
|
8786
|
-
|
|
8787
|
-
|
|
8788
|
-
}
|
|
8789
|
-
switch (feeSchedulerMode) {
|
|
8790
|
-
case 0 /* FeeSchedulerLinear */: {
|
|
9280
|
+
switch (feeMarketCapSchedulerMode) {
|
|
9281
|
+
case 3 /* FeeMarketCapSchedulerLinear */: {
|
|
8791
9282
|
const feeNumerator = getFeeNumeratorOnLinearFeeScheduler(
|
|
8792
9283
|
cliffFeeNumerator,
|
|
8793
9284
|
reductionFactor,
|
|
@@ -8795,7 +9286,7 @@ function getBaseFeeNumeratorByPeriod(cliffFeeNumerator, numberOfPeriod, period,
|
|
|
8795
9286
|
);
|
|
8796
9287
|
return feeNumerator;
|
|
8797
9288
|
}
|
|
8798
|
-
case
|
|
9289
|
+
case 4 /* FeeMarketCapSchedulerExponential */: {
|
|
8799
9290
|
const feeNumerator = getFeeNumeratorOnExponentialFeeScheduler(
|
|
8800
9291
|
cliffFeeNumerator,
|
|
8801
9292
|
reductionFactor,
|
|
@@ -8804,42 +9295,46 @@ function getBaseFeeNumeratorByPeriod(cliffFeeNumerator, numberOfPeriod, period,
|
|
|
8804
9295
|
return feeNumerator;
|
|
8805
9296
|
}
|
|
8806
9297
|
default:
|
|
8807
|
-
throw new Error("Invalid fee scheduler mode");
|
|
8808
|
-
}
|
|
8809
|
-
}
|
|
8810
|
-
function getFeeNumeratorOnLinearFeeScheduler(cliffFeeNumerator, reductionFactor, period) {
|
|
8811
|
-
const reduction = new BN8(period).mul(reductionFactor);
|
|
8812
|
-
return cliffFeeNumerator.sub(reduction);
|
|
8813
|
-
}
|
|
8814
|
-
function getFeeNumeratorOnExponentialFeeScheduler(cliffFeeNumerator, reductionFactor, period) {
|
|
8815
|
-
if (period === 0) {
|
|
8816
|
-
return cliffFeeNumerator;
|
|
9298
|
+
throw new Error("Invalid fee market cap scheduler mode");
|
|
8817
9299
|
}
|
|
8818
|
-
const basisPointMax = new BN8(BASIS_POINT_MAX);
|
|
8819
|
-
const bps = new BN8(reductionFactor).shln(64).div(basisPointMax);
|
|
8820
|
-
const base = ONE_Q64.sub(bps);
|
|
8821
|
-
const result = pow(base, new BN8(period));
|
|
8822
|
-
return cliffFeeNumerator.mul(result).div(ONE_Q64);
|
|
8823
9300
|
}
|
|
8824
|
-
function
|
|
8825
|
-
|
|
8826
|
-
|
|
8827
|
-
|
|
9301
|
+
function getFeeMarketCapBaseFeeNumerator(cliffFeeNumerator, numberOfPeriod, sqrtPriceStepBps, schedulerExpirationDuration, reductionFactor, feeMarketCapSchedulerMode, currentPoint, activationPoint, initSqrtPrice, currentSqrtPrice) {
|
|
9302
|
+
const schedulerExpirationPoint = activationPoint.add(
|
|
9303
|
+
new BN10(schedulerExpirationDuration)
|
|
9304
|
+
);
|
|
8828
9305
|
let period;
|
|
8829
|
-
if (currentPoint.lt(activationPoint)) {
|
|
8830
|
-
period = new
|
|
9306
|
+
if (currentPoint.gt(schedulerExpirationPoint) || currentPoint.lt(activationPoint)) {
|
|
9307
|
+
period = new BN10(numberOfPeriod);
|
|
8831
9308
|
} else {
|
|
8832
|
-
|
|
8833
|
-
|
|
8834
|
-
|
|
9309
|
+
if (currentSqrtPrice.lte(initSqrtPrice)) {
|
|
9310
|
+
period = new BN10(0);
|
|
9311
|
+
} else {
|
|
9312
|
+
const maxBps = new BN10(BASIS_POINT_MAX);
|
|
9313
|
+
const stepBps = new BN10(sqrtPriceStepBps);
|
|
9314
|
+
const passedPeriod = currentSqrtPrice.sub(initSqrtPrice).mul(maxBps).div(initSqrtPrice).div(stepBps);
|
|
9315
|
+
if (passedPeriod.gt(new BN10(numberOfPeriod))) {
|
|
9316
|
+
period = new BN10(numberOfPeriod);
|
|
9317
|
+
} else {
|
|
9318
|
+
period = passedPeriod;
|
|
9319
|
+
}
|
|
8835
9320
|
}
|
|
9321
|
+
period = BN10.min(period, new BN10(numberOfPeriod));
|
|
8836
9322
|
}
|
|
8837
|
-
return
|
|
9323
|
+
return getFeeMarketCapBaseFeeNumeratorByPeriod(
|
|
8838
9324
|
cliffFeeNumerator,
|
|
8839
9325
|
numberOfPeriod,
|
|
8840
9326
|
period,
|
|
8841
9327
|
reductionFactor,
|
|
8842
|
-
|
|
9328
|
+
feeMarketCapSchedulerMode
|
|
9329
|
+
);
|
|
9330
|
+
}
|
|
9331
|
+
function getFeeMarketCapMinBaseFeeNumerator(cliffFeeNumerator, numberOfPeriod, reductionFactor, feeMarketCapSchedulerMode) {
|
|
9332
|
+
return getFeeMarketCapBaseFeeNumeratorByPeriod(
|
|
9333
|
+
cliffFeeNumerator,
|
|
9334
|
+
numberOfPeriod,
|
|
9335
|
+
new BN10(numberOfPeriod),
|
|
9336
|
+
reductionFactor,
|
|
9337
|
+
feeMarketCapSchedulerMode
|
|
8843
9338
|
);
|
|
8844
9339
|
}
|
|
8845
9340
|
|
|
@@ -8864,7 +9359,7 @@ var FeeRateLimiter = class {
|
|
|
8864
9359
|
poolVersion
|
|
8865
9360
|
);
|
|
8866
9361
|
}
|
|
8867
|
-
getBaseFeeNumeratorFromIncludedFeeAmount(currentPoint, activationPoint, tradeDirection, includedFeeAmount) {
|
|
9362
|
+
getBaseFeeNumeratorFromIncludedFeeAmount(currentPoint, activationPoint, tradeDirection, includedFeeAmount, _initSqrtPrice, _currentSqrtPrice) {
|
|
8868
9363
|
if (isRateLimiterApplied(
|
|
8869
9364
|
this.referenceAmount,
|
|
8870
9365
|
this.maxLimiterDuration,
|
|
@@ -8885,7 +9380,7 @@ var FeeRateLimiter = class {
|
|
|
8885
9380
|
return this.cliffFeeNumerator;
|
|
8886
9381
|
}
|
|
8887
9382
|
}
|
|
8888
|
-
getBaseFeeNumeratorFromExcludedFeeAmount(currentPoint, activationPoint, tradeDirection, excludedFeeAmount) {
|
|
9383
|
+
getBaseFeeNumeratorFromExcludedFeeAmount(currentPoint, activationPoint, tradeDirection, excludedFeeAmount, _initSqrtPrice, _currentSqrtPrice) {
|
|
8889
9384
|
if (isRateLimiterApplied(
|
|
8890
9385
|
this.referenceAmount,
|
|
8891
9386
|
this.maxLimiterDuration,
|
|
@@ -8906,88 +9401,178 @@ var FeeRateLimiter = class {
|
|
|
8906
9401
|
return this.cliffFeeNumerator;
|
|
8907
9402
|
}
|
|
8908
9403
|
}
|
|
9404
|
+
validateBaseFeeIsStatic(currentPoint, activationPoint) {
|
|
9405
|
+
return validateFeeRateLimiterBaseFeeIsStatic(
|
|
9406
|
+
currentPoint,
|
|
9407
|
+
activationPoint,
|
|
9408
|
+
this.maxLimiterDuration,
|
|
9409
|
+
this.referenceAmount,
|
|
9410
|
+
this.maxFeeBps,
|
|
9411
|
+
this.feeIncrementBps
|
|
9412
|
+
);
|
|
9413
|
+
}
|
|
9414
|
+
getMinBaseFeeNumerator() {
|
|
9415
|
+
return this.cliffFeeNumerator;
|
|
9416
|
+
}
|
|
8909
9417
|
};
|
|
8910
|
-
var
|
|
8911
|
-
constructor(cliffFeeNumerator, numberOfPeriod, periodFrequency, reductionFactor,
|
|
9418
|
+
var FeeTimeScheduler = class {
|
|
9419
|
+
constructor(cliffFeeNumerator, numberOfPeriod, periodFrequency, reductionFactor, feeTimeSchedulerMode) {
|
|
8912
9420
|
this.cliffFeeNumerator = cliffFeeNumerator;
|
|
8913
9421
|
this.numberOfPeriod = numberOfPeriod;
|
|
8914
9422
|
this.periodFrequency = periodFrequency;
|
|
8915
9423
|
this.reductionFactor = reductionFactor;
|
|
8916
|
-
this.
|
|
9424
|
+
this.feeTimeSchedulerMode = feeTimeSchedulerMode;
|
|
8917
9425
|
}
|
|
8918
9426
|
validate(collectFeeMode, activationType, poolVersion) {
|
|
8919
|
-
return
|
|
9427
|
+
return validateFeeTimeScheduler(
|
|
8920
9428
|
this.numberOfPeriod,
|
|
8921
9429
|
this.periodFrequency,
|
|
8922
9430
|
this.reductionFactor,
|
|
8923
9431
|
this.cliffFeeNumerator,
|
|
8924
|
-
this.
|
|
9432
|
+
this.feeTimeSchedulerMode,
|
|
8925
9433
|
poolVersion
|
|
8926
9434
|
);
|
|
8927
9435
|
}
|
|
8928
|
-
getBaseFeeNumeratorFromIncludedFeeAmount(currentPoint, activationPoint) {
|
|
8929
|
-
return
|
|
9436
|
+
getBaseFeeNumeratorFromIncludedFeeAmount(currentPoint, activationPoint, _tradeDirection, _includedFeeAmount, _initSqrtPrice, _currentSqrtPrice) {
|
|
9437
|
+
return getFeeTimeBaseFeeNumerator(
|
|
8930
9438
|
this.cliffFeeNumerator,
|
|
8931
9439
|
this.numberOfPeriod,
|
|
8932
9440
|
this.periodFrequency,
|
|
8933
9441
|
this.reductionFactor,
|
|
8934
|
-
this.
|
|
9442
|
+
this.feeTimeSchedulerMode,
|
|
8935
9443
|
currentPoint,
|
|
8936
9444
|
activationPoint
|
|
8937
9445
|
);
|
|
8938
9446
|
}
|
|
8939
|
-
getBaseFeeNumeratorFromExcludedFeeAmount(currentPoint, activationPoint) {
|
|
8940
|
-
return
|
|
9447
|
+
getBaseFeeNumeratorFromExcludedFeeAmount(currentPoint, activationPoint, _tradeDirection, _excludedFeeAmount, _initSqrtPrice, _currentSqrtPrice) {
|
|
9448
|
+
return getFeeTimeBaseFeeNumerator(
|
|
8941
9449
|
this.cliffFeeNumerator,
|
|
8942
9450
|
this.numberOfPeriod,
|
|
8943
9451
|
this.periodFrequency,
|
|
8944
9452
|
this.reductionFactor,
|
|
8945
|
-
this.
|
|
9453
|
+
this.feeTimeSchedulerMode,
|
|
8946
9454
|
currentPoint,
|
|
8947
9455
|
activationPoint
|
|
8948
9456
|
);
|
|
8949
9457
|
}
|
|
9458
|
+
validateBaseFeeIsStatic(currentPoint, activationPoint) {
|
|
9459
|
+
return validateFeeTimeSchedulerBaseFeeIsStatic(
|
|
9460
|
+
currentPoint,
|
|
9461
|
+
activationPoint,
|
|
9462
|
+
new BN11(this.numberOfPeriod),
|
|
9463
|
+
this.periodFrequency
|
|
9464
|
+
);
|
|
9465
|
+
}
|
|
9466
|
+
getMinBaseFeeNumerator() {
|
|
9467
|
+
return getFeeTimeMinBaseFeeNumerator(
|
|
9468
|
+
this.cliffFeeNumerator,
|
|
9469
|
+
this.numberOfPeriod,
|
|
9470
|
+
this.reductionFactor,
|
|
9471
|
+
this.feeTimeSchedulerMode
|
|
9472
|
+
);
|
|
9473
|
+
}
|
|
9474
|
+
};
|
|
9475
|
+
var FeeMarketCapScheduler = class {
|
|
9476
|
+
constructor(cliffFeeNumerator, numberOfPeriod, sqrtPriceStepBps, schedulerExpirationDuration, reductionFactor, feeMarketCapSchedulerMode) {
|
|
9477
|
+
this.cliffFeeNumerator = cliffFeeNumerator;
|
|
9478
|
+
this.numberOfPeriod = numberOfPeriod;
|
|
9479
|
+
this.sqrtPriceStepBps = sqrtPriceStepBps;
|
|
9480
|
+
this.schedulerExpirationDuration = schedulerExpirationDuration;
|
|
9481
|
+
this.reductionFactor = reductionFactor;
|
|
9482
|
+
this.feeMarketCapSchedulerMode = feeMarketCapSchedulerMode;
|
|
9483
|
+
}
|
|
9484
|
+
validate(_collectFeeMode, _activationType, poolVersion) {
|
|
9485
|
+
return validateFeeMarketCapScheduler(
|
|
9486
|
+
this.cliffFeeNumerator,
|
|
9487
|
+
this.numberOfPeriod,
|
|
9488
|
+
new BN11(this.sqrtPriceStepBps),
|
|
9489
|
+
this.reductionFactor,
|
|
9490
|
+
new BN11(this.schedulerExpirationDuration),
|
|
9491
|
+
this.feeMarketCapSchedulerMode,
|
|
9492
|
+
poolVersion
|
|
9493
|
+
);
|
|
9494
|
+
}
|
|
9495
|
+
getBaseFeeNumeratorFromIncludedFeeAmount(currentPoint, activationPoint, _tradeDirection, _includedFeeAmount, initSqrtPrice, currentSqrtPrice) {
|
|
9496
|
+
return getFeeMarketCapBaseFeeNumerator(
|
|
9497
|
+
this.cliffFeeNumerator,
|
|
9498
|
+
this.numberOfPeriod,
|
|
9499
|
+
this.sqrtPriceStepBps,
|
|
9500
|
+
this.schedulerExpirationDuration,
|
|
9501
|
+
this.reductionFactor,
|
|
9502
|
+
this.feeMarketCapSchedulerMode,
|
|
9503
|
+
currentPoint,
|
|
9504
|
+
activationPoint,
|
|
9505
|
+
initSqrtPrice,
|
|
9506
|
+
currentSqrtPrice
|
|
9507
|
+
);
|
|
9508
|
+
}
|
|
9509
|
+
getBaseFeeNumeratorFromExcludedFeeAmount(currentPoint, activationPoint, _tradeDirection, _excludedFeeAmount, initSqrtPrice, currentSqrtPrice) {
|
|
9510
|
+
return getFeeMarketCapBaseFeeNumerator(
|
|
9511
|
+
this.cliffFeeNumerator,
|
|
9512
|
+
this.numberOfPeriod,
|
|
9513
|
+
this.sqrtPriceStepBps,
|
|
9514
|
+
this.schedulerExpirationDuration,
|
|
9515
|
+
this.reductionFactor,
|
|
9516
|
+
this.feeMarketCapSchedulerMode,
|
|
9517
|
+
currentPoint,
|
|
9518
|
+
activationPoint,
|
|
9519
|
+
initSqrtPrice,
|
|
9520
|
+
currentSqrtPrice
|
|
9521
|
+
);
|
|
9522
|
+
}
|
|
9523
|
+
validateBaseFeeIsStatic(currentPoint, activationPoint) {
|
|
9524
|
+
return validateFeeMarketCapBaseFeeIsStatic(
|
|
9525
|
+
currentPoint,
|
|
9526
|
+
activationPoint,
|
|
9527
|
+
new BN11(this.schedulerExpirationDuration)
|
|
9528
|
+
);
|
|
9529
|
+
}
|
|
9530
|
+
getMinBaseFeeNumerator() {
|
|
9531
|
+
return getFeeMarketCapMinBaseFeeNumerator(
|
|
9532
|
+
this.cliffFeeNumerator,
|
|
9533
|
+
this.numberOfPeriod,
|
|
9534
|
+
this.reductionFactor,
|
|
9535
|
+
this.feeMarketCapSchedulerMode
|
|
9536
|
+
);
|
|
9537
|
+
}
|
|
8950
9538
|
};
|
|
8951
|
-
function getBaseFeeHandler(
|
|
9539
|
+
function getBaseFeeHandler(program, rawData) {
|
|
9540
|
+
const data = Buffer.from(rawData);
|
|
9541
|
+
const modeIndex = data.readUInt8(8);
|
|
9542
|
+
const baseFeeMode = modeIndex;
|
|
8952
9543
|
switch (baseFeeMode) {
|
|
8953
|
-
case 0 /*
|
|
8954
|
-
case 1 /*
|
|
8955
|
-
|
|
8956
|
-
|
|
8957
|
-
|
|
8958
|
-
|
|
8959
|
-
|
|
8960
|
-
|
|
8961
|
-
|
|
8962
|
-
"le"
|
|
8963
|
-
);
|
|
8964
|
-
const feeScheduler = new FeeScheduler(
|
|
8965
|
-
cliffFeeNumerator,
|
|
8966
|
-
firstFactor,
|
|
8967
|
-
periodFrequency,
|
|
8968
|
-
thirdFactor,
|
|
8969
|
-
baseFeeMode
|
|
9544
|
+
case 0 /* FeeTimeSchedulerLinear */:
|
|
9545
|
+
case 1 /* FeeTimeSchedulerExponential */: {
|
|
9546
|
+
const poolFees = decodePodAlignedFeeTimeScheduler(data);
|
|
9547
|
+
return new FeeTimeScheduler(
|
|
9548
|
+
poolFees.cliffFeeNumerator,
|
|
9549
|
+
poolFees.numberOfPeriod,
|
|
9550
|
+
poolFees.periodFrequency,
|
|
9551
|
+
poolFees.reductionFactor,
|
|
9552
|
+
poolFees.baseFeeMode
|
|
8970
9553
|
);
|
|
8971
|
-
return feeScheduler;
|
|
8972
9554
|
}
|
|
8973
9555
|
case 2 /* RateLimiter */: {
|
|
8974
|
-
|
|
8975
|
-
|
|
8976
|
-
|
|
8977
|
-
|
|
8978
|
-
|
|
8979
|
-
|
|
8980
|
-
|
|
8981
|
-
)
|
|
8982
|
-
|
|
8983
|
-
|
|
8984
|
-
|
|
8985
|
-
|
|
8986
|
-
|
|
8987
|
-
|
|
8988
|
-
|
|
9556
|
+
const poolFees = decodePodAlignedFeeRateLimiter(data);
|
|
9557
|
+
return new FeeRateLimiter(
|
|
9558
|
+
poolFees.cliffFeeNumerator,
|
|
9559
|
+
poolFees.feeIncrementBps,
|
|
9560
|
+
poolFees.maxFeeBps,
|
|
9561
|
+
poolFees.maxLimiterDuration,
|
|
9562
|
+
poolFees.referenceAmount
|
|
9563
|
+
);
|
|
9564
|
+
}
|
|
9565
|
+
case 3 /* FeeMarketCapSchedulerLinear */:
|
|
9566
|
+
case 4 /* FeeMarketCapSchedulerExponential */: {
|
|
9567
|
+
const poolFees = decodePodAlignedFeeMarketCapScheduler(data);
|
|
9568
|
+
return new FeeMarketCapScheduler(
|
|
9569
|
+
poolFees.cliffFeeNumerator,
|
|
9570
|
+
poolFees.numberOfPeriod,
|
|
9571
|
+
poolFees.sqrtPriceStepBps,
|
|
9572
|
+
poolFees.schedulerExpirationDuration,
|
|
9573
|
+
poolFees.reductionFactor,
|
|
9574
|
+
poolFees.baseFeeMode
|
|
8989
9575
|
);
|
|
8990
|
-
return feeRateLimiter;
|
|
8991
9576
|
}
|
|
8992
9577
|
default:
|
|
8993
9578
|
throw new Error("Invalid base fee mode");
|
|
@@ -8995,21 +9580,21 @@ function getBaseFeeHandler(cliffFeeNumerator, firstFactor, secondFactor, thirdFa
|
|
|
8995
9580
|
}
|
|
8996
9581
|
|
|
8997
9582
|
// src/math/poolFees/dynamicFee.ts
|
|
8998
|
-
import
|
|
9583
|
+
import BN12 from "bn.js";
|
|
8999
9584
|
function isDynamicFeeEnabled(dynamicFee) {
|
|
9000
9585
|
return dynamicFee.initialized !== 0;
|
|
9001
9586
|
}
|
|
9002
9587
|
function getDynamicFeeNumerator(volatilityAccumulator, binStep, variableFeeControl) {
|
|
9003
|
-
const squareVfaBin = volatilityAccumulator.mul(new
|
|
9588
|
+
const squareVfaBin = volatilityAccumulator.mul(new BN12(binStep)).pow(new BN12(2));
|
|
9004
9589
|
const vFee = variableFeeControl.mul(squareVfaBin);
|
|
9005
|
-
return vFee.add(new
|
|
9590
|
+
return vFee.add(new BN12(DYNAMIC_FEE_ROUNDING_OFFSET)).div(new BN12(DYNAMIC_FEE_SCALING_FACTOR));
|
|
9006
9591
|
}
|
|
9007
9592
|
|
|
9008
9593
|
// src/math/quote.ts
|
|
9009
|
-
import
|
|
9594
|
+
import BN14 from "bn.js";
|
|
9010
9595
|
|
|
9011
9596
|
// src/math/curve.ts
|
|
9012
|
-
import
|
|
9597
|
+
import BN13 from "bn.js";
|
|
9013
9598
|
function getNextSqrtPriceFromAmountInBRoundingDown(sqrtPrice, liquidity, amount) {
|
|
9014
9599
|
const quotient = amount.shln(SCALE_OFFSET * 2).div(liquidity);
|
|
9015
9600
|
const result = sqrtPrice.add(quotient);
|
|
@@ -9039,16 +9624,16 @@ function getNextSqrtPriceFromAmountOutARoundingUp(sqrtPrice, liquidity, amount)
|
|
|
9039
9624
|
}
|
|
9040
9625
|
const product = amount.mul(sqrtPrice);
|
|
9041
9626
|
const denominator = liquidity.sub(product);
|
|
9042
|
-
if (denominator.lte(new
|
|
9627
|
+
if (denominator.lte(new BN13(0))) {
|
|
9043
9628
|
throw new Error("MathOverflow: denominator is zero or negative");
|
|
9044
9629
|
}
|
|
9045
9630
|
return mulDiv(liquidity, sqrtPrice, denominator, 0 /* Up */);
|
|
9046
9631
|
}
|
|
9047
9632
|
function getNextSqrtPriceFromOutput(sqrtPrice, liquidity, amountOut, aForB) {
|
|
9048
|
-
if (sqrtPrice.lte(new
|
|
9633
|
+
if (sqrtPrice.lte(new BN13(0))) {
|
|
9049
9634
|
throw new Error("sqrtPrice must be greater than 0");
|
|
9050
9635
|
}
|
|
9051
|
-
if (liquidity.lte(new
|
|
9636
|
+
if (liquidity.lte(new BN13(0))) {
|
|
9052
9637
|
throw new Error("liquidity must be greater than 0");
|
|
9053
9638
|
}
|
|
9054
9639
|
if (aForB) {
|
|
@@ -9066,10 +9651,10 @@ function getNextSqrtPriceFromOutput(sqrtPrice, liquidity, amountOut, aForB) {
|
|
|
9066
9651
|
}
|
|
9067
9652
|
}
|
|
9068
9653
|
function getNextSqrtPriceFromInput(sqrtPrice, liquidity, amountIn, aForB) {
|
|
9069
|
-
if (sqrtPrice.lte(new
|
|
9654
|
+
if (sqrtPrice.lte(new BN13(0))) {
|
|
9070
9655
|
throw new Error("sqrtPrice must be greater than 0");
|
|
9071
9656
|
}
|
|
9072
|
-
if (liquidity.lte(new
|
|
9657
|
+
if (liquidity.lte(new BN13(0))) {
|
|
9073
9658
|
throw new Error("liquidity must be greater than 0");
|
|
9074
9659
|
}
|
|
9075
9660
|
if (aForB) {
|
|
@@ -9100,7 +9685,7 @@ function getDeltaAmountBUnsignedUnchecked(lowerSqrtPrice, upperSqrtPrice, liquid
|
|
|
9100
9685
|
const prod = liquidity.mul(deltaSqrtPrice);
|
|
9101
9686
|
const shift = SCALE_OFFSET * 2;
|
|
9102
9687
|
if (rounding === 0 /* Up */) {
|
|
9103
|
-
const denominator = new
|
|
9688
|
+
const denominator = new BN13(1).ushln(shift);
|
|
9104
9689
|
const result = prod.add(denominator.subn(1)).div(denominator);
|
|
9105
9690
|
return result;
|
|
9106
9691
|
} else {
|
|
@@ -9121,7 +9706,7 @@ function getDeltaAmountAUnsignedUnchecked(lowerSqrtPrice, upperSqrtPrice, liquid
|
|
|
9121
9706
|
const numerator1 = liquidity;
|
|
9122
9707
|
const numerator2 = upperSqrtPrice.sub(lowerSqrtPrice);
|
|
9123
9708
|
const denominator = lowerSqrtPrice.mul(upperSqrtPrice);
|
|
9124
|
-
if (denominator.lte(new
|
|
9709
|
+
if (denominator.lte(new BN13(0))) {
|
|
9125
9710
|
throw new Error("Denominator must be greater than zero");
|
|
9126
9711
|
}
|
|
9127
9712
|
const result = mulDiv(numerator1, numerator2, denominator, rounding);
|
|
@@ -9139,19 +9724,22 @@ function getLiquidityDeltaFromAmountB(amountB, lowerSqrtPrice, upperSqrtPrice) {
|
|
|
9139
9724
|
}
|
|
9140
9725
|
|
|
9141
9726
|
// src/math/quote.ts
|
|
9142
|
-
function getSwapResultFromExactInput(poolState, amountIn, feeMode, tradeDirection, currentPoint) {
|
|
9143
|
-
let actualProtocolFee = new
|
|
9144
|
-
let actualTradingFee = new
|
|
9145
|
-
let actualReferralFee = new
|
|
9146
|
-
let actualPartnerFee = new
|
|
9727
|
+
function getSwapResultFromExactInput(program, poolState, amountIn, feeMode, tradeDirection, currentPoint) {
|
|
9728
|
+
let actualProtocolFee = new BN14(0);
|
|
9729
|
+
let actualTradingFee = new BN14(0);
|
|
9730
|
+
let actualReferralFee = new BN14(0);
|
|
9731
|
+
let actualPartnerFee = new BN14(0);
|
|
9147
9732
|
const maxFeeNumerator = getMaxFeeNumerator(poolState.version);
|
|
9148
9733
|
const tradeFeeNumerator = getTotalTradingFeeFromIncludedFeeAmount(
|
|
9734
|
+
program,
|
|
9149
9735
|
poolState.poolFees,
|
|
9150
9736
|
currentPoint,
|
|
9151
9737
|
poolState.activationPoint,
|
|
9152
9738
|
amountIn,
|
|
9153
9739
|
tradeDirection,
|
|
9154
|
-
maxFeeNumerator
|
|
9740
|
+
maxFeeNumerator,
|
|
9741
|
+
poolState.poolFees.initSqrtPrice,
|
|
9742
|
+
poolState.sqrtPrice
|
|
9155
9743
|
);
|
|
9156
9744
|
let actualAmountIn;
|
|
9157
9745
|
if (feeMode.feesOnInput) {
|
|
@@ -9225,7 +9813,7 @@ function calculateAtoBFromAmountIn(poolState, amountIn) {
|
|
|
9225
9813
|
return {
|
|
9226
9814
|
outputAmount,
|
|
9227
9815
|
nextSqrtPrice,
|
|
9228
|
-
amountLeft: new
|
|
9816
|
+
amountLeft: new BN14(0)
|
|
9229
9817
|
};
|
|
9230
9818
|
}
|
|
9231
9819
|
function calculateBtoAFromAmountIn(poolState, amountIn) {
|
|
@@ -9247,22 +9835,25 @@ function calculateBtoAFromAmountIn(poolState, amountIn) {
|
|
|
9247
9835
|
return {
|
|
9248
9836
|
outputAmount,
|
|
9249
9837
|
nextSqrtPrice,
|
|
9250
|
-
amountLeft: new
|
|
9838
|
+
amountLeft: new BN14(0)
|
|
9251
9839
|
};
|
|
9252
9840
|
}
|
|
9253
|
-
function getSwapResultFromPartialInput(poolState, amountIn, feeMode, tradeDirection, currentPoint) {
|
|
9254
|
-
let actualProtocolFee = new
|
|
9255
|
-
let actualTradingFee = new
|
|
9256
|
-
let actualReferralFee = new
|
|
9257
|
-
let actualPartnerFee = new
|
|
9841
|
+
function getSwapResultFromPartialInput(program, poolState, amountIn, feeMode, tradeDirection, currentPoint) {
|
|
9842
|
+
let actualProtocolFee = new BN14(0);
|
|
9843
|
+
let actualTradingFee = new BN14(0);
|
|
9844
|
+
let actualReferralFee = new BN14(0);
|
|
9845
|
+
let actualPartnerFee = new BN14(0);
|
|
9258
9846
|
const maxFeeNumerator = getMaxFeeNumerator(poolState.version);
|
|
9259
9847
|
const tradeFeeNumerator = getTotalTradingFeeFromIncludedFeeAmount(
|
|
9848
|
+
program,
|
|
9260
9849
|
poolState.poolFees,
|
|
9261
9850
|
currentPoint,
|
|
9262
9851
|
poolState.activationPoint,
|
|
9263
9852
|
amountIn,
|
|
9264
9853
|
tradeDirection,
|
|
9265
|
-
maxFeeNumerator
|
|
9854
|
+
maxFeeNumerator,
|
|
9855
|
+
poolState.poolFees.initSqrtPrice,
|
|
9856
|
+
poolState.sqrtPrice
|
|
9266
9857
|
);
|
|
9267
9858
|
let actualAmountIn;
|
|
9268
9859
|
if (feeMode.feesOnInput) {
|
|
@@ -9295,16 +9886,19 @@ function getSwapResultFromPartialInput(poolState, amountIn, feeMode, tradeDirect
|
|
|
9295
9886
|
}
|
|
9296
9887
|
let { amountLeft, outputAmount, nextSqrtPrice } = swapAmountFromInput;
|
|
9297
9888
|
let includedFeeInputAmount;
|
|
9298
|
-
if (amountLeft.gt(new
|
|
9889
|
+
if (amountLeft.gt(new BN14(0))) {
|
|
9299
9890
|
actualAmountIn = actualAmountIn.sub(amountLeft);
|
|
9300
9891
|
if (feeMode.feesOnInput) {
|
|
9301
9892
|
const tradeFeeNumerator2 = getTotalTradingFeeFromExcludedFeeAmount(
|
|
9893
|
+
program,
|
|
9302
9894
|
poolState.poolFees,
|
|
9303
9895
|
currentPoint,
|
|
9304
9896
|
poolState.activationPoint,
|
|
9305
9897
|
actualAmountIn,
|
|
9306
9898
|
tradeDirection,
|
|
9307
|
-
maxFeeNumerator
|
|
9899
|
+
maxFeeNumerator,
|
|
9900
|
+
poolState.poolFees.initSqrtPrice,
|
|
9901
|
+
poolState.sqrtPrice
|
|
9308
9902
|
);
|
|
9309
9903
|
const { includedFeeAmount, feeAmount } = getIncludedFeeAmount(
|
|
9310
9904
|
tradeFeeNumerator2,
|
|
@@ -9424,23 +10018,26 @@ function calculateBtoAFromPartialAmountIn(poolState, amountIn) {
|
|
|
9424
10018
|
amountLeft
|
|
9425
10019
|
};
|
|
9426
10020
|
}
|
|
9427
|
-
function getSwapResultFromExactOutput(poolState, amountOut, feeMode, tradeDirection, currentPoint) {
|
|
9428
|
-
let actualProtocolFee = new
|
|
9429
|
-
let actualTradingFee = new
|
|
9430
|
-
let actualReferralFee = new
|
|
9431
|
-
let actualPartnerFee = new
|
|
10021
|
+
function getSwapResultFromExactOutput(program, poolState, amountOut, feeMode, tradeDirection, currentPoint) {
|
|
10022
|
+
let actualProtocolFee = new BN14(0);
|
|
10023
|
+
let actualTradingFee = new BN14(0);
|
|
10024
|
+
let actualReferralFee = new BN14(0);
|
|
10025
|
+
let actualPartnerFee = new BN14(0);
|
|
9432
10026
|
const maxFeeNumerator = getMaxFeeNumerator(poolState.version);
|
|
9433
10027
|
let includedFeeAmountOut;
|
|
9434
10028
|
if (feeMode.feesOnInput) {
|
|
9435
10029
|
includedFeeAmountOut = amountOut;
|
|
9436
10030
|
} else {
|
|
9437
10031
|
const tradeFeeNumerator = getTotalTradingFeeFromExcludedFeeAmount(
|
|
10032
|
+
program,
|
|
9438
10033
|
poolState.poolFees,
|
|
9439
10034
|
currentPoint,
|
|
9440
10035
|
poolState.activationPoint,
|
|
9441
10036
|
amountOut,
|
|
9442
10037
|
tradeDirection,
|
|
9443
|
-
maxFeeNumerator
|
|
10038
|
+
maxFeeNumerator,
|
|
10039
|
+
poolState.poolFees.initSqrtPrice,
|
|
10040
|
+
poolState.sqrtPrice
|
|
9444
10041
|
);
|
|
9445
10042
|
const { includedFeeAmount, feeAmount } = getIncludedFeeAmount(
|
|
9446
10043
|
tradeFeeNumerator,
|
|
@@ -9474,12 +10071,15 @@ function getSwapResultFromExactOutput(poolState, amountOut, feeMode, tradeDirect
|
|
|
9474
10071
|
let includedFeeInputAmount;
|
|
9475
10072
|
if (feeMode.feesOnInput) {
|
|
9476
10073
|
const tradeFeeNumerator = getTotalTradingFeeFromExcludedFeeAmount(
|
|
10074
|
+
program,
|
|
9477
10075
|
poolState.poolFees,
|
|
9478
10076
|
currentPoint,
|
|
9479
10077
|
poolState.activationPoint,
|
|
9480
10078
|
inputAmount,
|
|
9481
10079
|
tradeDirection,
|
|
9482
|
-
maxFeeNumerator
|
|
10080
|
+
maxFeeNumerator,
|
|
10081
|
+
poolState.poolFees.initSqrtPrice,
|
|
10082
|
+
poolState.sqrtPrice
|
|
9483
10083
|
);
|
|
9484
10084
|
const { includedFeeAmount, feeAmount } = getIncludedFeeAmount(
|
|
9485
10085
|
tradeFeeNumerator,
|
|
@@ -9500,7 +10100,7 @@ function getSwapResultFromExactOutput(poolState, amountOut, feeMode, tradeDirect
|
|
|
9500
10100
|
includedFeeInputAmount = inputAmount;
|
|
9501
10101
|
}
|
|
9502
10102
|
return {
|
|
9503
|
-
amountLeft: new
|
|
10103
|
+
amountLeft: new BN14(0),
|
|
9504
10104
|
includedFeeInputAmount,
|
|
9505
10105
|
excludedFeeInputAmount: inputAmount,
|
|
9506
10106
|
outputAmount: amountOut,
|
|
@@ -9553,8 +10153,8 @@ function calculateBtoAFromAmountOut(poolState, amountOut) {
|
|
|
9553
10153
|
nextSqrtPrice
|
|
9554
10154
|
};
|
|
9555
10155
|
}
|
|
9556
|
-
function swapQuoteExactInput(pool, currentPoint, amountIn, slippage, aToB, hasReferral, tokenADecimal, tokenBDecimal, inputTokenInfo, outputTokenInfo) {
|
|
9557
|
-
if (amountIn.lte(new
|
|
10156
|
+
function swapQuoteExactInput(program, pool, currentPoint, amountIn, slippage, aToB, hasReferral, tokenADecimal, tokenBDecimal, inputTokenInfo, outputTokenInfo) {
|
|
10157
|
+
if (amountIn.lte(new BN14(0))) {
|
|
9558
10158
|
throw new Error("Amount in must be greater than 0");
|
|
9559
10159
|
}
|
|
9560
10160
|
if (!isSwapEnabled(pool, currentPoint)) {
|
|
@@ -9571,6 +10171,7 @@ function swapQuoteExactInput(pool, currentPoint, amountIn, slippage, aToB, hasRe
|
|
|
9571
10171
|
).amount;
|
|
9572
10172
|
}
|
|
9573
10173
|
const swapResult = getSwapResultFromExactInput(
|
|
10174
|
+
program,
|
|
9574
10175
|
pool,
|
|
9575
10176
|
actualAmountIn,
|
|
9576
10177
|
feeMode,
|
|
@@ -9603,8 +10204,8 @@ function swapQuoteExactInput(pool, currentPoint, amountIn, slippage, aToB, hasRe
|
|
|
9603
10204
|
priceImpact
|
|
9604
10205
|
});
|
|
9605
10206
|
}
|
|
9606
|
-
function swapQuoteExactOutput(pool, currentPoint, amountOut, slippage, aToB, hasReferral, tokenADecimal, tokenBDecimal, inputTokenInfo, outputTokenInfo) {
|
|
9607
|
-
if (amountOut.lte(new
|
|
10207
|
+
function swapQuoteExactOutput(program, pool, currentPoint, amountOut, slippage, aToB, hasReferral, tokenADecimal, tokenBDecimal, inputTokenInfo, outputTokenInfo) {
|
|
10208
|
+
if (amountOut.lte(new BN14(0))) {
|
|
9608
10209
|
throw new Error("Amount out must be greater than 0");
|
|
9609
10210
|
}
|
|
9610
10211
|
if (!isSwapEnabled(pool, currentPoint)) {
|
|
@@ -9621,6 +10222,7 @@ function swapQuoteExactOutput(pool, currentPoint, amountOut, slippage, aToB, has
|
|
|
9621
10222
|
).amount;
|
|
9622
10223
|
}
|
|
9623
10224
|
const swapResult = getSwapResultFromExactOutput(
|
|
10225
|
+
program,
|
|
9624
10226
|
pool,
|
|
9625
10227
|
actualAmountOut,
|
|
9626
10228
|
feeMode,
|
|
@@ -9653,8 +10255,8 @@ function swapQuoteExactOutput(pool, currentPoint, amountOut, slippage, aToB, has
|
|
|
9653
10255
|
priceImpact
|
|
9654
10256
|
});
|
|
9655
10257
|
}
|
|
9656
|
-
function swapQuotePartialInput(pool, currentPoint, amountIn, slippage, aToB, hasReferral, tokenADecimal, tokenBDecimal, inputTokenInfo, outputTokenInfo) {
|
|
9657
|
-
if (amountIn.lte(new
|
|
10258
|
+
function swapQuotePartialInput(program, pool, currentPoint, amountIn, slippage, aToB, hasReferral, tokenADecimal, tokenBDecimal, inputTokenInfo, outputTokenInfo) {
|
|
10259
|
+
if (amountIn.lte(new BN14(0))) {
|
|
9658
10260
|
throw new Error("Amount in must be greater than 0");
|
|
9659
10261
|
}
|
|
9660
10262
|
if (!isSwapEnabled(pool, currentPoint)) {
|
|
@@ -9671,6 +10273,7 @@ function swapQuotePartialInput(pool, currentPoint, amountIn, slippage, aToB, has
|
|
|
9671
10273
|
).amount;
|
|
9672
10274
|
}
|
|
9673
10275
|
const swapResult = getSwapResultFromPartialInput(
|
|
10276
|
+
program,
|
|
9674
10277
|
pool,
|
|
9675
10278
|
actualAmountIn,
|
|
9676
10279
|
feeMode,
|
|
@@ -9705,7 +10308,7 @@ function swapQuotePartialInput(pool, currentPoint, amountIn, slippage, aToB, has
|
|
|
9705
10308
|
}
|
|
9706
10309
|
|
|
9707
10310
|
// src/math/priceMath.ts
|
|
9708
|
-
import { BN as
|
|
10311
|
+
import { BN as BN15 } from "@coral-xyz/anchor";
|
|
9709
10312
|
import Decimal3 from "decimal.js";
|
|
9710
10313
|
function calculateInitSqrtPrice(tokenAAmount, tokenBAmount, minSqrtPrice, maxSqrtPrice) {
|
|
9711
10314
|
if (tokenAAmount.isZero() || tokenBAmount.isZero()) {
|
|
@@ -9728,39 +10331,79 @@ function calculateInitSqrtPrice(tokenAAmount, tokenBAmount, minSqrtPrice, maxSqr
|
|
|
9728
10331
|
const discriminant = xyMinusPa.mul(xyMinusPa).add(fourY);
|
|
9729
10332
|
const sqrtDiscriminant = discriminant.sqrt();
|
|
9730
10333
|
const result = paMinusXY.add(sqrtDiscriminant).div(new Decimal3(2)).mul(Decimal3.pow(2, 64));
|
|
9731
|
-
return new
|
|
10334
|
+
return new BN15(result.floor().toFixed());
|
|
9732
10335
|
}
|
|
9733
10336
|
|
|
9734
10337
|
// src/helpers/validation.ts
|
|
9735
|
-
function
|
|
9736
|
-
if (!periodFrequency.eq(new
|
|
9737
|
-
if (numberOfPeriod === 0 || periodFrequency.eq(new
|
|
9738
|
-
|
|
10338
|
+
function validateFeeTimeScheduler(numberOfPeriod, periodFrequency, reductionFactor, cliffFeeNumerator, baseFeeMode, poolVersion) {
|
|
10339
|
+
if (!periodFrequency.eq(new BN16(0)) || numberOfPeriod !== 0 || !reductionFactor.eq(new BN16(0))) {
|
|
10340
|
+
if (numberOfPeriod === 0 || periodFrequency.eq(new BN16(0)) || reductionFactor.eq(new BN16(0))) {
|
|
10341
|
+
throw new Error("PoolError::InvalidFeeTimeScheduler");
|
|
9739
10342
|
}
|
|
9740
10343
|
}
|
|
9741
|
-
const minFeeNumerator =
|
|
10344
|
+
const minFeeNumerator = getFeeTimeMinBaseFeeNumerator(
|
|
9742
10345
|
cliffFeeNumerator,
|
|
9743
10346
|
numberOfPeriod,
|
|
9744
10347
|
reductionFactor,
|
|
9745
10348
|
baseFeeMode
|
|
9746
10349
|
);
|
|
9747
10350
|
const maxFeeNumerator = getMaxBaseFeeNumerator(cliffFeeNumerator);
|
|
9748
|
-
validateFeeFraction(minFeeNumerator, new
|
|
9749
|
-
validateFeeFraction(maxFeeNumerator, new
|
|
9750
|
-
if (minFeeNumerator.lt(new
|
|
10351
|
+
validateFeeFraction(minFeeNumerator, new BN16(FEE_DENOMINATOR));
|
|
10352
|
+
validateFeeFraction(maxFeeNumerator, new BN16(FEE_DENOMINATOR));
|
|
10353
|
+
if (minFeeNumerator.lt(new BN16(MIN_FEE_NUMERATOR)) || maxFeeNumerator.gt(getMaxFeeNumerator(poolVersion))) {
|
|
10354
|
+
throw new Error("PoolError::ExceedMaxFeeBps");
|
|
10355
|
+
}
|
|
10356
|
+
return true;
|
|
10357
|
+
}
|
|
10358
|
+
function validateFeeTimeSchedulerBaseFeeIsStatic(currentPoint, activationPoint, numberOfPeriod, periodFrequency) {
|
|
10359
|
+
const schedulerExpirationPoint = activationPoint.add(
|
|
10360
|
+
numberOfPeriod.mul(periodFrequency)
|
|
10361
|
+
);
|
|
10362
|
+
return currentPoint.gt(schedulerExpirationPoint);
|
|
10363
|
+
}
|
|
10364
|
+
function validateFeeMarketCapScheduler(cliffFeeNumerator, numberOfPeriod, sqrtPriceStepBps, reductionFactor, schedulerExpirationDuration, feeMarketCapSchedulerMode, poolVersion) {
|
|
10365
|
+
if (reductionFactor.lte(new BN16(0))) {
|
|
10366
|
+
throw new Error("PoolError::InvalidFeeMarketCapScheduler");
|
|
10367
|
+
}
|
|
10368
|
+
if (sqrtPriceStepBps.lte(new BN16(0))) {
|
|
10369
|
+
throw new Error("PoolError::InvalidFeeMarketCapScheduler");
|
|
10370
|
+
}
|
|
10371
|
+
if (schedulerExpirationDuration.lte(new BN16(0))) {
|
|
10372
|
+
throw new Error("PoolError::InvalidFeeMarketCapScheduler");
|
|
10373
|
+
}
|
|
10374
|
+
if (numberOfPeriod <= 0) {
|
|
10375
|
+
throw new Error("PoolError::InvalidFeeMarketCapScheduler");
|
|
10376
|
+
}
|
|
10377
|
+
const minFeeNumerator = getFeeMarketCapMinBaseFeeNumerator(
|
|
10378
|
+
cliffFeeNumerator,
|
|
10379
|
+
numberOfPeriod,
|
|
10380
|
+
reductionFactor,
|
|
10381
|
+
feeMarketCapSchedulerMode
|
|
10382
|
+
);
|
|
10383
|
+
const maxFeeNumerator = cliffFeeNumerator;
|
|
10384
|
+
validateFeeFraction(minFeeNumerator, new BN16(FEE_DENOMINATOR));
|
|
10385
|
+
validateFeeFraction(maxFeeNumerator, new BN16(FEE_DENOMINATOR));
|
|
10386
|
+
const maxAllowedFeeNumerator = getMaxFeeNumerator(poolVersion);
|
|
10387
|
+
if (minFeeNumerator.lt(new BN16(MIN_FEE_NUMERATOR)) || maxFeeNumerator.gt(maxAllowedFeeNumerator)) {
|
|
9751
10388
|
throw new Error("PoolError::ExceedMaxFeeBps");
|
|
9752
10389
|
}
|
|
9753
10390
|
return true;
|
|
9754
10391
|
}
|
|
10392
|
+
function validateFeeMarketCapBaseFeeIsStatic(currentPoint, activationPoint, schedulerExpirationDuration) {
|
|
10393
|
+
const schedulerExpirationPoint = activationPoint.add(
|
|
10394
|
+
schedulerExpirationDuration
|
|
10395
|
+
);
|
|
10396
|
+
return currentPoint.gt(schedulerExpirationPoint);
|
|
10397
|
+
}
|
|
9755
10398
|
function validateFeeRateLimiter(cliffFeeNumerator, feeIncrementBps, maxFeeBps, maxLimiterDuration, referenceAmount, collectFeeMode, activationType, poolVersion) {
|
|
9756
10399
|
if (collectFeeMode !== 1 /* OnlyB */) {
|
|
9757
10400
|
return false;
|
|
9758
10401
|
}
|
|
9759
10402
|
const maxFeeNumeratorFromBps = toNumerator(
|
|
9760
|
-
new
|
|
9761
|
-
new
|
|
10403
|
+
new BN16(maxFeeBps),
|
|
10404
|
+
new BN16(FEE_DENOMINATOR)
|
|
9762
10405
|
);
|
|
9763
|
-
if (cliffFeeNumerator.lt(new
|
|
10406
|
+
if (cliffFeeNumerator.lt(new BN16(MIN_FEE_NUMERATOR)) || cliffFeeNumerator.gt(maxFeeNumeratorFromBps)) {
|
|
9764
10407
|
return false;
|
|
9765
10408
|
}
|
|
9766
10409
|
if (isZeroRateLimiter(
|
|
@@ -9779,39 +10422,53 @@ function validateFeeRateLimiter(cliffFeeNumerator, feeIncrementBps, maxFeeBps, m
|
|
|
9779
10422
|
)) {
|
|
9780
10423
|
return false;
|
|
9781
10424
|
}
|
|
9782
|
-
const maxLimiterDurationLimit = activationType === 0 /* Slot */ ? new
|
|
9783
|
-
if (new
|
|
10425
|
+
const maxLimiterDurationLimit = activationType === 0 /* Slot */ ? new BN16(MAX_RATE_LIMITER_DURATION_IN_SLOTS) : new BN16(MAX_RATE_LIMITER_DURATION_IN_SECONDS);
|
|
10426
|
+
if (new BN16(maxLimiterDuration).gt(maxLimiterDurationLimit)) {
|
|
9784
10427
|
return false;
|
|
9785
10428
|
}
|
|
9786
10429
|
const feeIncrementNumerator = toNumerator(
|
|
9787
|
-
new
|
|
9788
|
-
new
|
|
10430
|
+
new BN16(feeIncrementBps),
|
|
10431
|
+
new BN16(FEE_DENOMINATOR)
|
|
9789
10432
|
);
|
|
9790
|
-
if (feeIncrementNumerator.gte(new
|
|
10433
|
+
if (feeIncrementNumerator.gte(new BN16(FEE_DENOMINATOR))) {
|
|
9791
10434
|
return false;
|
|
9792
10435
|
}
|
|
9793
10436
|
if (maxFeeBps > getMaxFeeBps(poolVersion)) {
|
|
9794
10437
|
return false;
|
|
9795
10438
|
}
|
|
9796
10439
|
const minFeeNumerator = getFeeNumeratorFromIncludedFeeAmount(
|
|
9797
|
-
new
|
|
10440
|
+
new BN16(0),
|
|
9798
10441
|
cliffFeeNumerator,
|
|
9799
10442
|
referenceAmount,
|
|
9800
10443
|
maxFeeBps,
|
|
9801
10444
|
feeIncrementBps
|
|
9802
10445
|
);
|
|
9803
10446
|
const maxFeeNumeratorFromAmount = getFeeNumeratorFromIncludedFeeAmount(
|
|
9804
|
-
new
|
|
10447
|
+
new BN16(Number.MAX_SAFE_INTEGER),
|
|
9805
10448
|
cliffFeeNumerator,
|
|
9806
10449
|
referenceAmount,
|
|
9807
10450
|
maxFeeBps,
|
|
9808
10451
|
feeIncrementBps
|
|
9809
10452
|
);
|
|
9810
|
-
if (minFeeNumerator.lt(new
|
|
10453
|
+
if (minFeeNumerator.lt(new BN16(MIN_FEE_NUMERATOR)) || maxFeeNumeratorFromAmount.gt(getMaxFeeNumerator(poolVersion))) {
|
|
9811
10454
|
return false;
|
|
9812
10455
|
}
|
|
9813
10456
|
return true;
|
|
9814
10457
|
}
|
|
10458
|
+
function validateFeeRateLimiterBaseFeeIsStatic(currentPoint, activationPoint, maxLimiterDuration, referenceAmount, maxFeeBps, feeIncrementBps) {
|
|
10459
|
+
if (isZeroRateLimiter(
|
|
10460
|
+
referenceAmount,
|
|
10461
|
+
maxLimiterDuration,
|
|
10462
|
+
maxFeeBps,
|
|
10463
|
+
feeIncrementBps
|
|
10464
|
+
)) {
|
|
10465
|
+
return true;
|
|
10466
|
+
}
|
|
10467
|
+
const lastEffectiveRateLimiterPoint = activationPoint.add(
|
|
10468
|
+
new BN16(maxLimiterDuration)
|
|
10469
|
+
);
|
|
10470
|
+
return currentPoint.gt(lastEffectiveRateLimiterPoint);
|
|
10471
|
+
}
|
|
9815
10472
|
function validateFeeFraction(numerator, denominator) {
|
|
9816
10473
|
if (denominator.isZero() || numerator.gte(denominator)) {
|
|
9817
10474
|
throw new Error(
|
|
@@ -9822,8 +10479,126 @@ function validateFeeFraction(numerator, denominator) {
|
|
|
9822
10479
|
|
|
9823
10480
|
// src/helpers/common.ts
|
|
9824
10481
|
import { PublicKey as PublicKey6 } from "@solana/web3.js";
|
|
9825
|
-
import
|
|
10482
|
+
import BN18 from "bn.js";
|
|
9826
10483
|
import Decimal4 from "decimal.js";
|
|
10484
|
+
|
|
10485
|
+
// src/helpers/feeCodec.ts
|
|
10486
|
+
import BN17 from "bn.js";
|
|
10487
|
+
import { BorshCoder } from "@coral-xyz/anchor";
|
|
10488
|
+
var cpAmmCoder = new BorshCoder(cp_amm_default);
|
|
10489
|
+
function encodeFeeTimeSchedulerParams(cliffFeeNumerator, numberOfPeriod, periodFrequency, reductionFactor, baseFeeMode) {
|
|
10490
|
+
const feeTimeScheduler = {
|
|
10491
|
+
cliff_fee_numerator: new BN17(cliffFeeNumerator.toString()),
|
|
10492
|
+
number_of_period: numberOfPeriod,
|
|
10493
|
+
period_frequency: new BN17(periodFrequency.toString()),
|
|
10494
|
+
reduction_factor: new BN17(reductionFactor.toString()),
|
|
10495
|
+
base_fee_mode: baseFeeMode,
|
|
10496
|
+
padding: FEE_PADDING
|
|
10497
|
+
};
|
|
10498
|
+
return cpAmmCoder.types.encode("BorshFeeTimeScheduler", feeTimeScheduler);
|
|
10499
|
+
}
|
|
10500
|
+
function decodeFeeTimeSchedulerParams(data) {
|
|
10501
|
+
const decoded = cpAmmCoder.types.decode("BorshFeeTimeScheduler", data);
|
|
10502
|
+
return {
|
|
10503
|
+
cliffFeeNumerator: decoded.cliff_fee_numerator,
|
|
10504
|
+
numberOfPeriod: decoded.number_of_period,
|
|
10505
|
+
periodFrequency: decoded.period_frequency,
|
|
10506
|
+
reductionFactor: decoded.reduction_factor,
|
|
10507
|
+
baseFeeMode: decoded.base_fee_mode,
|
|
10508
|
+
padding: decoded.padding
|
|
10509
|
+
};
|
|
10510
|
+
}
|
|
10511
|
+
function decodePodAlignedFeeTimeScheduler(data) {
|
|
10512
|
+
const decoded = cpAmmCoder.types.decode("PodAlignedFeeTimeScheduler", data);
|
|
10513
|
+
return {
|
|
10514
|
+
cliffFeeNumerator: decoded.cliff_fee_numerator,
|
|
10515
|
+
numberOfPeriod: decoded.number_of_period,
|
|
10516
|
+
periodFrequency: decoded.period_frequency,
|
|
10517
|
+
reductionFactor: decoded.reduction_factor,
|
|
10518
|
+
baseFeeMode: decoded.base_fee_mode,
|
|
10519
|
+
padding: decoded.padding
|
|
10520
|
+
};
|
|
10521
|
+
}
|
|
10522
|
+
function encodeFeeMarketCapSchedulerParams(cliffFeeNumerator, numberOfPeriod, sqrtPriceStepBps, schedulerExpirationDuration, reductionFactor, baseFeeMode) {
|
|
10523
|
+
const feeMarketCapScheduler = {
|
|
10524
|
+
cliff_fee_numerator: new BN17(cliffFeeNumerator.toString()),
|
|
10525
|
+
number_of_period: numberOfPeriod,
|
|
10526
|
+
sqrt_price_step_bps: sqrtPriceStepBps,
|
|
10527
|
+
scheduler_expiration_duration: schedulerExpirationDuration,
|
|
10528
|
+
reduction_factor: new BN17(reductionFactor.toString()),
|
|
10529
|
+
base_fee_mode: baseFeeMode,
|
|
10530
|
+
padding: FEE_PADDING
|
|
10531
|
+
};
|
|
10532
|
+
return cpAmmCoder.types.encode(
|
|
10533
|
+
"BorshFeeMarketCapScheduler",
|
|
10534
|
+
feeMarketCapScheduler
|
|
10535
|
+
);
|
|
10536
|
+
}
|
|
10537
|
+
function decodeFeeMarketCapSchedulerParams(data) {
|
|
10538
|
+
const decoded = cpAmmCoder.types.decode("BorshFeeMarketCapScheduler", data);
|
|
10539
|
+
return {
|
|
10540
|
+
cliffFeeNumerator: decoded.cliff_fee_numerator,
|
|
10541
|
+
numberOfPeriod: decoded.number_of_period,
|
|
10542
|
+
sqrtPriceStepBps: decoded.sqrt_price_step_bps,
|
|
10543
|
+
schedulerExpirationDuration: decoded.scheduler_expiration_duration,
|
|
10544
|
+
reductionFactor: decoded.reduction_factor,
|
|
10545
|
+
baseFeeMode: decoded.base_fee_mode,
|
|
10546
|
+
padding: decoded.padding
|
|
10547
|
+
};
|
|
10548
|
+
}
|
|
10549
|
+
function decodePodAlignedFeeMarketCapScheduler(data) {
|
|
10550
|
+
const decoded = cpAmmCoder.types.decode(
|
|
10551
|
+
"PodAlignedFeeMarketCapScheduler",
|
|
10552
|
+
data
|
|
10553
|
+
);
|
|
10554
|
+
return {
|
|
10555
|
+
cliffFeeNumerator: decoded.cliff_fee_numerator,
|
|
10556
|
+
numberOfPeriod: decoded.number_of_period,
|
|
10557
|
+
sqrtPriceStepBps: decoded.sqrt_price_step_bps,
|
|
10558
|
+
schedulerExpirationDuration: decoded.scheduler_expiration_duration,
|
|
10559
|
+
reductionFactor: decoded.reduction_factor,
|
|
10560
|
+
baseFeeMode: decoded.base_fee_mode,
|
|
10561
|
+
padding: decoded.padding
|
|
10562
|
+
};
|
|
10563
|
+
}
|
|
10564
|
+
function encodeFeeRateLimiterParams(cliffFeeNumerator, feeIncrementBps, maxLimiterDuration, maxFeeBps, referenceAmount) {
|
|
10565
|
+
const feeRateLimiter = {
|
|
10566
|
+
cliff_fee_numerator: new BN17(cliffFeeNumerator.toString()),
|
|
10567
|
+
fee_increment_bps: feeIncrementBps,
|
|
10568
|
+
max_limiter_duration: maxLimiterDuration,
|
|
10569
|
+
max_fee_bps: maxFeeBps,
|
|
10570
|
+
reference_amount: new BN17(referenceAmount.toString()),
|
|
10571
|
+
base_fee_mode: 2 /* RateLimiter */,
|
|
10572
|
+
padding: FEE_PADDING
|
|
10573
|
+
};
|
|
10574
|
+
return cpAmmCoder.types.encode("BorshFeeRateLimiter", feeRateLimiter);
|
|
10575
|
+
}
|
|
10576
|
+
function decodeFeeRateLimiterParams(data) {
|
|
10577
|
+
const decoded = cpAmmCoder.types.decode("BorshFeeRateLimiter", data);
|
|
10578
|
+
return {
|
|
10579
|
+
cliffFeeNumerator: decoded.cliff_fee_numerator,
|
|
10580
|
+
feeIncrementBps: decoded.fee_increment_bps,
|
|
10581
|
+
maxLimiterDuration: decoded.max_limiter_duration,
|
|
10582
|
+
maxFeeBps: decoded.max_fee_bps,
|
|
10583
|
+
referenceAmount: decoded.reference_amount,
|
|
10584
|
+
baseFeeMode: decoded.base_fee_mode,
|
|
10585
|
+
padding: decoded.padding
|
|
10586
|
+
};
|
|
10587
|
+
}
|
|
10588
|
+
function decodePodAlignedFeeRateLimiter(data) {
|
|
10589
|
+
const decoded = cpAmmCoder.types.decode("PodAlignedFeeRateLimiter", data);
|
|
10590
|
+
return {
|
|
10591
|
+
cliffFeeNumerator: decoded.cliff_fee_numerator,
|
|
10592
|
+
feeIncrementBps: decoded.fee_increment_bps,
|
|
10593
|
+
maxLimiterDuration: decoded.max_limiter_duration,
|
|
10594
|
+
maxFeeBps: decoded.max_fee_bps,
|
|
10595
|
+
referenceAmount: decoded.reference_amount,
|
|
10596
|
+
baseFeeMode: decoded.base_fee_mode,
|
|
10597
|
+
padding: decoded.padding
|
|
10598
|
+
};
|
|
10599
|
+
}
|
|
10600
|
+
|
|
10601
|
+
// src/helpers/common.ts
|
|
9827
10602
|
function hasPartner(poolState) {
|
|
9828
10603
|
return !poolState.partner.equals(PublicKey6.default);
|
|
9829
10604
|
}
|
|
@@ -9831,10 +10606,10 @@ function getCurrentPoint(connection, activationType) {
|
|
|
9831
10606
|
return __async(this, null, function* () {
|
|
9832
10607
|
const currentSlot = yield connection.getSlot();
|
|
9833
10608
|
if (activationType === 0 /* Slot */) {
|
|
9834
|
-
return new
|
|
10609
|
+
return new BN18(currentSlot);
|
|
9835
10610
|
} else {
|
|
9836
10611
|
const currentTime = yield connection.getBlockTime(currentSlot);
|
|
9837
|
-
return new
|
|
10612
|
+
return new BN18(currentTime);
|
|
9838
10613
|
}
|
|
9839
10614
|
});
|
|
9840
10615
|
}
|
|
@@ -9845,7 +10620,7 @@ function convertToFeeSchedulerSecondFactor(value) {
|
|
|
9845
10620
|
return Array.from(value.toArrayLike(Buffer, "le", 8));
|
|
9846
10621
|
}
|
|
9847
10622
|
function parseFeeSchedulerSecondFactor(secondFactor) {
|
|
9848
|
-
return new
|
|
10623
|
+
return new BN18(Buffer.from(secondFactor), "le");
|
|
9849
10624
|
}
|
|
9850
10625
|
function convertToRateLimiterSecondFactor(maxLimiterDuration, maxFeeBps) {
|
|
9851
10626
|
const buffer1 = maxLimiterDuration.toArrayLike(Buffer, "le", 4);
|
|
@@ -9861,10 +10636,10 @@ function parseRateLimiterSecondFactor(secondFactor) {
|
|
|
9861
10636
|
};
|
|
9862
10637
|
}
|
|
9863
10638
|
function bpsToFeeNumerator(bps) {
|
|
9864
|
-
return new
|
|
10639
|
+
return new BN18(bps * FEE_DENOMINATOR).divn(BASIS_POINT_MAX);
|
|
9865
10640
|
}
|
|
9866
10641
|
function feeNumeratorToBps(feeNumerator) {
|
|
9867
|
-
return feeNumerator.muln(BASIS_POINT_MAX).div(new
|
|
10642
|
+
return feeNumerator.muln(BASIS_POINT_MAX).div(new BN18(FEE_DENOMINATOR)).toNumber();
|
|
9868
10643
|
}
|
|
9869
10644
|
function convertToLamports(amount, tokenDecimal) {
|
|
9870
10645
|
const valueInLamports = new Decimal4(amount).mul(
|
|
@@ -9873,19 +10648,22 @@ function convertToLamports(amount, tokenDecimal) {
|
|
|
9873
10648
|
return fromDecimalToBN(valueInLamports);
|
|
9874
10649
|
}
|
|
9875
10650
|
function fromDecimalToBN(value) {
|
|
9876
|
-
return new
|
|
10651
|
+
return new BN18(value.floor().toFixed());
|
|
9877
10652
|
}
|
|
9878
|
-
function
|
|
10653
|
+
function getFeeTimeSchedulerParams(startingBaseFeeBps, endingBaseFeeBps, baseFeeMode, numberOfPeriod, totalDuration) {
|
|
9879
10654
|
if (startingBaseFeeBps == endingBaseFeeBps) {
|
|
9880
10655
|
if (numberOfPeriod != 0 || totalDuration != 0) {
|
|
9881
10656
|
throw new Error("numberOfPeriod and totalDuration must both be zero");
|
|
9882
10657
|
}
|
|
10658
|
+
const data2 = encodeFeeTimeSchedulerParams(
|
|
10659
|
+
bpsToFeeNumerator(startingBaseFeeBps),
|
|
10660
|
+
0,
|
|
10661
|
+
new BN18(0),
|
|
10662
|
+
new BN18(0),
|
|
10663
|
+
0 /* FeeTimeSchedulerLinear */
|
|
10664
|
+
);
|
|
9883
10665
|
return {
|
|
9884
|
-
|
|
9885
|
-
firstFactor: 0,
|
|
9886
|
-
secondFactor: Array.from(new BN15(0).toArrayLike(Buffer, "le", 8)),
|
|
9887
|
-
thirdFactor: new BN15(0),
|
|
9888
|
-
baseFeeMode: 0 /* FeeSchedulerLinear */
|
|
10666
|
+
data: Array.from(data2)
|
|
9889
10667
|
};
|
|
9890
10668
|
}
|
|
9891
10669
|
if (numberOfPeriod <= 0) {
|
|
@@ -9909,23 +10687,68 @@ function getFeeSchedulerParams(startingBaseFeeBps, endingBaseFeeBps, baseFeeMode
|
|
|
9909
10687
|
}
|
|
9910
10688
|
const maxBaseFeeNumerator = bpsToFeeNumerator(startingBaseFeeBps);
|
|
9911
10689
|
const minBaseFeeNumerator = bpsToFeeNumerator(endingBaseFeeBps);
|
|
9912
|
-
const periodFrequency = new
|
|
9913
|
-
const secondFactor = convertToFeeSchedulerSecondFactor(periodFrequency);
|
|
10690
|
+
const periodFrequency = new BN18(totalDuration / numberOfPeriod);
|
|
9914
10691
|
let reductionFactor;
|
|
9915
|
-
if (baseFeeMode == 0 /*
|
|
10692
|
+
if (baseFeeMode == 0 /* FeeTimeSchedulerLinear */) {
|
|
9916
10693
|
const totalReduction = maxBaseFeeNumerator.sub(minBaseFeeNumerator);
|
|
9917
10694
|
reductionFactor = totalReduction.divn(numberOfPeriod);
|
|
9918
10695
|
} else {
|
|
9919
10696
|
const ratio = minBaseFeeNumerator.toNumber() / maxBaseFeeNumerator.toNumber();
|
|
9920
10697
|
const decayBase = Math.pow(ratio, 1 / numberOfPeriod);
|
|
9921
|
-
reductionFactor = new
|
|
10698
|
+
reductionFactor = new BN18(BASIS_POINT_MAX * (1 - decayBase));
|
|
9922
10699
|
}
|
|
10700
|
+
const data = encodeFeeTimeSchedulerParams(
|
|
10701
|
+
maxBaseFeeNumerator,
|
|
10702
|
+
numberOfPeriod,
|
|
10703
|
+
periodFrequency,
|
|
10704
|
+
reductionFactor,
|
|
10705
|
+
baseFeeMode
|
|
10706
|
+
);
|
|
9923
10707
|
return {
|
|
9924
|
-
|
|
9925
|
-
|
|
9926
|
-
|
|
9927
|
-
|
|
10708
|
+
data: Array.from(data)
|
|
10709
|
+
};
|
|
10710
|
+
}
|
|
10711
|
+
function getFeeMarketCapSchedulerParams(startingBaseFeeBps, endingBaseFeeBps, baseFeeMode, numberOfPeriod, sqrtPriceStepBps, schedulerExpirationDuration) {
|
|
10712
|
+
if (numberOfPeriod <= 0) {
|
|
10713
|
+
throw new Error("Total periods must be greater than zero");
|
|
10714
|
+
}
|
|
10715
|
+
const poolMaxFeeBps = getMaxFeeBps(CURRENT_POOL_VERSION);
|
|
10716
|
+
if (startingBaseFeeBps <= endingBaseFeeBps) {
|
|
10717
|
+
throw new Error(
|
|
10718
|
+
`startingBaseFeeBps (${startingBaseFeeBps} bps) must be greater than endingBaseFeeBps (${endingBaseFeeBps} bps)`
|
|
10719
|
+
);
|
|
10720
|
+
}
|
|
10721
|
+
if (startingBaseFeeBps > poolMaxFeeBps) {
|
|
10722
|
+
throw new Error(
|
|
10723
|
+
`startingBaseFeeBps (${startingBaseFeeBps} bps) exceeds maximum allowed value of ${poolMaxFeeBps} bps`
|
|
10724
|
+
);
|
|
10725
|
+
}
|
|
10726
|
+
if (numberOfPeriod == 0 || sqrtPriceStepBps == 0 || schedulerExpirationDuration == 0) {
|
|
10727
|
+
throw new Error(
|
|
10728
|
+
"numberOfPeriod, sqrtPriceStepBps, and schedulerExpirationDuration must be greater than zero"
|
|
10729
|
+
);
|
|
10730
|
+
}
|
|
10731
|
+
const maxBaseFeeNumerator = bpsToFeeNumerator(startingBaseFeeBps);
|
|
10732
|
+
const minBaseFeeNumerator = bpsToFeeNumerator(endingBaseFeeBps);
|
|
10733
|
+
let reductionFactor;
|
|
10734
|
+
if (baseFeeMode == 3 /* FeeMarketCapSchedulerLinear */) {
|
|
10735
|
+
const totalReduction = maxBaseFeeNumerator.sub(minBaseFeeNumerator);
|
|
10736
|
+
reductionFactor = totalReduction.divn(numberOfPeriod);
|
|
10737
|
+
} else {
|
|
10738
|
+
const ratio = minBaseFeeNumerator.toNumber() / maxBaseFeeNumerator.toNumber();
|
|
10739
|
+
const decayBase = Math.pow(ratio, 1 / numberOfPeriod);
|
|
10740
|
+
reductionFactor = new BN18(BASIS_POINT_MAX * (1 - decayBase));
|
|
10741
|
+
}
|
|
10742
|
+
const data = encodeFeeMarketCapSchedulerParams(
|
|
10743
|
+
maxBaseFeeNumerator,
|
|
10744
|
+
numberOfPeriod,
|
|
10745
|
+
sqrtPriceStepBps,
|
|
10746
|
+
schedulerExpirationDuration,
|
|
10747
|
+
reductionFactor,
|
|
9928
10748
|
baseFeeMode
|
|
10749
|
+
);
|
|
10750
|
+
return {
|
|
10751
|
+
data: Array.from(data)
|
|
9929
10752
|
};
|
|
9930
10753
|
}
|
|
9931
10754
|
function getRateLimiterParams(baseFeeBps, feeIncrementBps, referenceAmount, maxLimiterDuration, maxFeeBps, tokenBDecimal, activationType) {
|
|
@@ -9946,7 +10769,7 @@ function getRateLimiterParams(baseFeeBps, feeIncrementBps, referenceAmount, maxL
|
|
|
9946
10769
|
`Fee increment (${feeIncrementBps} bps) exceeds maximum allowed value of ${poolMaxFeeBps} bps`
|
|
9947
10770
|
);
|
|
9948
10771
|
}
|
|
9949
|
-
if (feeIncrementNumerator.gte(new
|
|
10772
|
+
if (feeIncrementNumerator.gte(new BN18(FEE_DENOMINATOR))) {
|
|
9950
10773
|
throw new Error(
|
|
9951
10774
|
"Fee increment numerator must be less than FEE_DENOMINATOR"
|
|
9952
10775
|
);
|
|
@@ -9956,12 +10779,12 @@ function getRateLimiterParams(baseFeeBps, feeIncrementBps, referenceAmount, maxL
|
|
|
9956
10779
|
`Max fee (${maxFeeBps} bps) exceeds maximum allowed value of ${poolMaxFeeBps} bps for PoolVersion V${CURRENT_POOL_VERSION}`
|
|
9957
10780
|
);
|
|
9958
10781
|
}
|
|
9959
|
-
const deltaNumerator = new
|
|
10782
|
+
const deltaNumerator = new BN18(poolMaxFeeNumerator).sub(cliffFeeNumerator);
|
|
9960
10783
|
const maxIndex = deltaNumerator.div(feeIncrementNumerator);
|
|
9961
|
-
if (maxIndex.lt(new
|
|
10784
|
+
if (maxIndex.lt(new BN18(1))) {
|
|
9962
10785
|
throw new Error("Fee increment is too large for the given base fee");
|
|
9963
10786
|
}
|
|
9964
|
-
if (cliffFeeNumerator.lt(new
|
|
10787
|
+
if (cliffFeeNumerator.lt(new BN18(MIN_FEE_NUMERATOR)) || cliffFeeNumerator.gt(new BN18(poolMaxFeeNumerator))) {
|
|
9965
10788
|
throw new Error("Base fee must be between 0.01% and 99%");
|
|
9966
10789
|
}
|
|
9967
10790
|
const maxDuration = activationType === 0 /* Slot */ ? MAX_RATE_LIMITER_DURATION_IN_SLOTS : MAX_RATE_LIMITER_DURATION_IN_SECONDS;
|
|
@@ -9974,55 +10797,83 @@ function getRateLimiterParams(baseFeeBps, feeIncrementBps, referenceAmount, maxL
|
|
|
9974
10797
|
referenceAmount,
|
|
9975
10798
|
tokenBDecimal
|
|
9976
10799
|
);
|
|
9977
|
-
const
|
|
9978
|
-
|
|
9979
|
-
|
|
10800
|
+
const data = encodeFeeRateLimiterParams(
|
|
10801
|
+
cliffFeeNumerator,
|
|
10802
|
+
feeIncrementBps,
|
|
10803
|
+
maxLimiterDuration,
|
|
10804
|
+
maxFeeBps,
|
|
10805
|
+
referenceAmountInLamports
|
|
9980
10806
|
);
|
|
9981
10807
|
return {
|
|
9982
|
-
|
|
9983
|
-
firstFactor: feeIncrementBps,
|
|
9984
|
-
secondFactor,
|
|
9985
|
-
thirdFactor: new BN15(referenceAmountInLamports),
|
|
9986
|
-
baseFeeMode: 2 /* RateLimiter */
|
|
10808
|
+
data: Array.from(data)
|
|
9987
10809
|
};
|
|
9988
10810
|
}
|
|
9989
10811
|
function getBaseFeeParams(baseFeeParams, tokenBDecimal, activationType) {
|
|
9990
|
-
|
|
9991
|
-
|
|
9992
|
-
|
|
9993
|
-
|
|
10812
|
+
switch (baseFeeParams.baseFeeMode) {
|
|
10813
|
+
case 0 /* FeeTimeSchedulerLinear */:
|
|
10814
|
+
case 1 /* FeeTimeSchedulerExponential */: {
|
|
10815
|
+
if (!baseFeeParams.feeTimeSchedulerParam) {
|
|
10816
|
+
throw new Error(
|
|
10817
|
+
"Fee scheduler parameters are required for FeeTimeScheduler mode"
|
|
10818
|
+
);
|
|
10819
|
+
}
|
|
10820
|
+
const { startingFeeBps, endingFeeBps, numberOfPeriod, totalDuration } = baseFeeParams.feeTimeSchedulerParam;
|
|
10821
|
+
return getFeeTimeSchedulerParams(
|
|
10822
|
+
startingFeeBps,
|
|
10823
|
+
endingFeeBps,
|
|
10824
|
+
baseFeeParams.baseFeeMode,
|
|
10825
|
+
numberOfPeriod,
|
|
10826
|
+
totalDuration
|
|
9994
10827
|
);
|
|
9995
10828
|
}
|
|
9996
|
-
|
|
9997
|
-
|
|
9998
|
-
|
|
9999
|
-
|
|
10000
|
-
|
|
10001
|
-
|
|
10002
|
-
|
|
10003
|
-
|
|
10004
|
-
|
|
10005
|
-
|
|
10006
|
-
|
|
10007
|
-
|
|
10008
|
-
|
|
10009
|
-
|
|
10010
|
-
|
|
10011
|
-
|
|
10012
|
-
|
|
10013
|
-
|
|
10014
|
-
|
|
10015
|
-
|
|
10829
|
+
case 2 /* RateLimiter */: {
|
|
10830
|
+
if (!baseFeeParams.rateLimiterParam) {
|
|
10831
|
+
throw new Error(
|
|
10832
|
+
"Rate limiter parameters are required for RateLimiter mode"
|
|
10833
|
+
);
|
|
10834
|
+
}
|
|
10835
|
+
const {
|
|
10836
|
+
baseFeeBps,
|
|
10837
|
+
feeIncrementBps,
|
|
10838
|
+
referenceAmount,
|
|
10839
|
+
maxLimiterDuration,
|
|
10840
|
+
maxFeeBps
|
|
10841
|
+
} = baseFeeParams.rateLimiterParam;
|
|
10842
|
+
return getRateLimiterParams(
|
|
10843
|
+
baseFeeBps,
|
|
10844
|
+
feeIncrementBps,
|
|
10845
|
+
referenceAmount,
|
|
10846
|
+
maxLimiterDuration,
|
|
10847
|
+
maxFeeBps,
|
|
10848
|
+
tokenBDecimal,
|
|
10849
|
+
activationType
|
|
10016
10850
|
);
|
|
10017
10851
|
}
|
|
10018
|
-
|
|
10019
|
-
|
|
10020
|
-
|
|
10021
|
-
|
|
10022
|
-
|
|
10023
|
-
|
|
10024
|
-
|
|
10025
|
-
|
|
10852
|
+
case 3 /* FeeMarketCapSchedulerLinear */:
|
|
10853
|
+
case 4 /* FeeMarketCapSchedulerExponential */: {
|
|
10854
|
+
if (!baseFeeParams.feeMarketCapSchedulerParam) {
|
|
10855
|
+
throw new Error(
|
|
10856
|
+
"Fee scheduler parameters are required for FeeMarketCapScheduler mode"
|
|
10857
|
+
);
|
|
10858
|
+
}
|
|
10859
|
+
const {
|
|
10860
|
+
startingFeeBps,
|
|
10861
|
+
endingFeeBps,
|
|
10862
|
+
numberOfPeriod,
|
|
10863
|
+
sqrtPriceStepBps,
|
|
10864
|
+
schedulerExpirationDuration
|
|
10865
|
+
} = baseFeeParams.feeMarketCapSchedulerParam;
|
|
10866
|
+
return getFeeMarketCapSchedulerParams(
|
|
10867
|
+
startingFeeBps,
|
|
10868
|
+
endingFeeBps,
|
|
10869
|
+
baseFeeParams.baseFeeMode,
|
|
10870
|
+
numberOfPeriod,
|
|
10871
|
+
sqrtPriceStepBps,
|
|
10872
|
+
schedulerExpirationDuration
|
|
10873
|
+
);
|
|
10874
|
+
}
|
|
10875
|
+
default:
|
|
10876
|
+
throw new Error("Invalid base fee mode");
|
|
10026
10877
|
}
|
|
10027
10878
|
}
|
|
10028
10879
|
function getDynamicFeeParams(baseFeeBps, maxPriceChangeBps = MAX_PRICE_CHANGE_BPS_DEFAULT) {
|
|
@@ -10032,15 +10883,15 @@ function getDynamicFeeParams(baseFeeBps, maxPriceChangeBps = MAX_PRICE_CHANGE_BP
|
|
|
10032
10883
|
);
|
|
10033
10884
|
}
|
|
10034
10885
|
const priceRatio = maxPriceChangeBps / BASIS_POINT_MAX + 1;
|
|
10035
|
-
const sqrtPriceRatioQ64 = new
|
|
10886
|
+
const sqrtPriceRatioQ64 = new BN18(
|
|
10036
10887
|
Decimal4.sqrt(priceRatio.toString()).mul(Decimal4.pow(2, 64)).floor().toFixed()
|
|
10037
10888
|
);
|
|
10038
10889
|
const deltaBinId = sqrtPriceRatioQ64.sub(ONE_Q64).div(BIN_STEP_BPS_U128_DEFAULT).muln(2);
|
|
10039
|
-
const maxVolatilityAccumulator = new
|
|
10040
|
-
const squareVfaBin = maxVolatilityAccumulator.mul(new
|
|
10041
|
-
const baseFeeNumerator = new
|
|
10890
|
+
const maxVolatilityAccumulator = new BN18(deltaBinId.muln(BASIS_POINT_MAX));
|
|
10891
|
+
const squareVfaBin = maxVolatilityAccumulator.mul(new BN18(BIN_STEP_BPS_DEFAULT)).pow(new BN18(2));
|
|
10892
|
+
const baseFeeNumerator = new BN18(bpsToFeeNumerator(baseFeeBps));
|
|
10042
10893
|
const maxDynamicFeeNumerator = baseFeeNumerator.muln(20).divn(100);
|
|
10043
|
-
const vFee = maxDynamicFeeNumerator.mul(new
|
|
10894
|
+
const vFee = maxDynamicFeeNumerator.mul(new BN18(1e11)).sub(new BN18(99999999999));
|
|
10044
10895
|
const variableFeeControl = vFee.div(squareVfaBin);
|
|
10045
10896
|
return {
|
|
10046
10897
|
binStep: BIN_STEP_BPS_DEFAULT,
|
|
@@ -10054,10 +10905,10 @@ function getDynamicFeeParams(baseFeeBps, maxPriceChangeBps = MAX_PRICE_CHANGE_BP
|
|
|
10054
10905
|
}
|
|
10055
10906
|
|
|
10056
10907
|
// src/CpAmm.ts
|
|
10057
|
-
import
|
|
10908
|
+
import BN19, { min as min2, max } from "bn.js";
|
|
10058
10909
|
var CpAmm = class {
|
|
10059
10910
|
constructor(connection) {
|
|
10060
|
-
this._program = new
|
|
10911
|
+
this._program = new Program2(cp_amm_default, {
|
|
10061
10912
|
connection
|
|
10062
10913
|
});
|
|
10063
10914
|
this.poolAuthority = derivePoolAuthority();
|
|
@@ -10283,7 +11134,7 @@ var CpAmm = class {
|
|
|
10283
11134
|
poolAuthority,
|
|
10284
11135
|
rentReceiver: owner,
|
|
10285
11136
|
owner,
|
|
10286
|
-
tokenProgram:
|
|
11137
|
+
tokenProgram: TOKEN_2022_PROGRAM_ID3
|
|
10287
11138
|
}).instruction();
|
|
10288
11139
|
});
|
|
10289
11140
|
}
|
|
@@ -10402,7 +11253,7 @@ var CpAmm = class {
|
|
|
10402
11253
|
payer,
|
|
10403
11254
|
pool,
|
|
10404
11255
|
position,
|
|
10405
|
-
tokenProgram:
|
|
11256
|
+
tokenProgram: TOKEN_2022_PROGRAM_ID3,
|
|
10406
11257
|
systemProgram: SystemProgram2.programId
|
|
10407
11258
|
}).instruction();
|
|
10408
11259
|
return {
|
|
@@ -10576,6 +11427,36 @@ var CpAmm = class {
|
|
|
10576
11427
|
return pools;
|
|
10577
11428
|
});
|
|
10578
11429
|
}
|
|
11430
|
+
fetchPoolFees(pool) {
|
|
11431
|
+
return __async(this, null, function* () {
|
|
11432
|
+
const poolState = yield this._program.account.pool.fetchNullable(pool);
|
|
11433
|
+
if (!poolState) {
|
|
11434
|
+
throw new Error(`Pool account: ${pool} not found`);
|
|
11435
|
+
}
|
|
11436
|
+
const data = Buffer.from(poolState.poolFees.baseFee.baseFeeInfo.data);
|
|
11437
|
+
const modeIndex = data.readUInt8(8);
|
|
11438
|
+
const baseFeeMode = modeIndex;
|
|
11439
|
+
switch (baseFeeMode) {
|
|
11440
|
+
case 0 /* FeeTimeSchedulerLinear */:
|
|
11441
|
+
case 1 /* FeeTimeSchedulerExponential */: {
|
|
11442
|
+
const poolFees = decodePodAlignedFeeTimeScheduler(data);
|
|
11443
|
+
return poolFees;
|
|
11444
|
+
}
|
|
11445
|
+
case 2 /* RateLimiter */: {
|
|
11446
|
+
const poolFees = decodePodAlignedFeeRateLimiter(data);
|
|
11447
|
+
return poolFees;
|
|
11448
|
+
}
|
|
11449
|
+
case 3 /* FeeMarketCapSchedulerLinear */:
|
|
11450
|
+
case 4 /* FeeMarketCapSchedulerExponential */: {
|
|
11451
|
+
const poolFees = decodePodAlignedFeeMarketCapScheduler(data);
|
|
11452
|
+
return poolFees;
|
|
11453
|
+
}
|
|
11454
|
+
default: {
|
|
11455
|
+
throw new Error(`Invalid base fee mode: ${baseFeeMode}`);
|
|
11456
|
+
}
|
|
11457
|
+
}
|
|
11458
|
+
});
|
|
11459
|
+
}
|
|
10579
11460
|
/**
|
|
10580
11461
|
* Fetches the Position state.
|
|
10581
11462
|
* @param position - Public key of the position.
|
|
@@ -10808,8 +11689,9 @@ var CpAmm = class {
|
|
|
10808
11689
|
} = params;
|
|
10809
11690
|
const { activationType } = poolState;
|
|
10810
11691
|
const aToB = poolState.tokenAMint.equals(inputTokenMint);
|
|
10811
|
-
const currentPoint = activationType ? new
|
|
11692
|
+
const currentPoint = activationType ? new BN19(currentTime) : new BN19(currentSlot);
|
|
10812
11693
|
const swapResult = swapQuoteExactInput(
|
|
11694
|
+
this._program,
|
|
10813
11695
|
poolState,
|
|
10814
11696
|
currentPoint,
|
|
10815
11697
|
inAmount,
|
|
@@ -10853,6 +11735,7 @@ var CpAmm = class {
|
|
|
10853
11735
|
case 0 /* ExactIn */:
|
|
10854
11736
|
if ("amountIn" in params) {
|
|
10855
11737
|
return swapQuoteExactInput(
|
|
11738
|
+
this._program,
|
|
10856
11739
|
poolState,
|
|
10857
11740
|
currentPoint,
|
|
10858
11741
|
params.amountIn,
|
|
@@ -10869,6 +11752,7 @@ var CpAmm = class {
|
|
|
10869
11752
|
case 2 /* ExactOut */:
|
|
10870
11753
|
if ("amountOut" in params) {
|
|
10871
11754
|
return swapQuoteExactOutput(
|
|
11755
|
+
this._program,
|
|
10872
11756
|
poolState,
|
|
10873
11757
|
currentPoint,
|
|
10874
11758
|
params.amountOut,
|
|
@@ -10885,6 +11769,7 @@ var CpAmm = class {
|
|
|
10885
11769
|
case 1 /* PartialFill */:
|
|
10886
11770
|
if ("amountIn" in params) {
|
|
10887
11771
|
return swapQuotePartialInput(
|
|
11772
|
+
this._program,
|
|
10888
11773
|
poolState,
|
|
10889
11774
|
currentPoint,
|
|
10890
11775
|
params.amountIn,
|
|
@@ -10952,7 +11837,7 @@ var CpAmm = class {
|
|
|
10952
11837
|
0 /* Up */
|
|
10953
11838
|
)
|
|
10954
11839
|
};
|
|
10955
|
-
const rawOutputAmount = new
|
|
11840
|
+
const rawOutputAmount = new BN19(rawAmount(liquidityDelta));
|
|
10956
11841
|
const outputAmount = outputTokenInfo ? calculateTransferFeeIncludedAmount(
|
|
10957
11842
|
rawOutputAmount,
|
|
10958
11843
|
outputTokenInfo.mint,
|
|
@@ -11059,7 +11944,7 @@ var CpAmm = class {
|
|
|
11059
11944
|
tokenAInfo,
|
|
11060
11945
|
tokenBInfo
|
|
11061
11946
|
} = params;
|
|
11062
|
-
if (tokenAAmount.eq(new
|
|
11947
|
+
if (tokenAAmount.eq(new BN19(0)) && tokenBAmount.eq(new BN19(0))) {
|
|
11063
11948
|
throw new Error("Invalid input amount");
|
|
11064
11949
|
}
|
|
11065
11950
|
const actualAmountAIn = tokenAInfo ? tokenAAmount.sub(
|
|
@@ -11175,7 +12060,7 @@ var CpAmm = class {
|
|
|
11175
12060
|
tokenBVault,
|
|
11176
12061
|
payerTokenA,
|
|
11177
12062
|
payerTokenB,
|
|
11178
|
-
token2022Program:
|
|
12063
|
+
token2022Program: TOKEN_2022_PROGRAM_ID3,
|
|
11179
12064
|
tokenAProgram,
|
|
11180
12065
|
tokenBProgram,
|
|
11181
12066
|
systemProgram: SystemProgram2.programId
|
|
@@ -11226,7 +12111,7 @@ var CpAmm = class {
|
|
|
11226
12111
|
tokenAMint,
|
|
11227
12112
|
tokenBMint,
|
|
11228
12113
|
tokenAAmount,
|
|
11229
|
-
tokenBAmount: tokenBMint.equals(NATIVE_MINT2) ? max(tokenBAmount, new
|
|
12114
|
+
tokenBAmount: tokenBMint.equals(NATIVE_MINT2) ? max(tokenBAmount, new BN19(1)) : tokenBAmount,
|
|
11230
12115
|
payer,
|
|
11231
12116
|
positionNft,
|
|
11232
12117
|
tokenAProgram,
|
|
@@ -11266,7 +12151,7 @@ var CpAmm = class {
|
|
|
11266
12151
|
tokenBVault,
|
|
11267
12152
|
payerTokenA,
|
|
11268
12153
|
payerTokenB,
|
|
11269
|
-
token2022Program:
|
|
12154
|
+
token2022Program: TOKEN_2022_PROGRAM_ID3,
|
|
11270
12155
|
tokenAProgram,
|
|
11271
12156
|
tokenBProgram,
|
|
11272
12157
|
systemProgram: SystemProgram2.programId
|
|
@@ -11361,7 +12246,7 @@ var CpAmm = class {
|
|
|
11361
12246
|
tokenBVault,
|
|
11362
12247
|
payerTokenA,
|
|
11363
12248
|
payerTokenB,
|
|
11364
|
-
token2022Program:
|
|
12249
|
+
token2022Program: TOKEN_2022_PROGRAM_ID3,
|
|
11365
12250
|
tokenAProgram,
|
|
11366
12251
|
tokenBProgram,
|
|
11367
12252
|
systemProgram: SystemProgram2.programId
|
|
@@ -11774,20 +12659,21 @@ var CpAmm = class {
|
|
|
11774
12659
|
}
|
|
11775
12660
|
let { poolState } = params;
|
|
11776
12661
|
poolState = poolState != null ? poolState : yield this.fetchPoolState(pool);
|
|
11777
|
-
const
|
|
11778
|
-
|
|
11779
|
-
|
|
12662
|
+
const data = Buffer.from(poolState.poolFees.baseFee.baseFeeInfo.data);
|
|
12663
|
+
const modeIndex = data.readUInt8(8);
|
|
12664
|
+
const baseFeeMode = modeIndex;
|
|
11780
12665
|
let rateLimiterApplied = false;
|
|
11781
|
-
if (
|
|
12666
|
+
if (baseFeeMode === 2 /* RateLimiter */) {
|
|
11782
12667
|
const currentPoint = yield getCurrentPoint(
|
|
11783
12668
|
this._program.provider.connection,
|
|
11784
12669
|
poolState.activationType
|
|
11785
12670
|
);
|
|
12671
|
+
const rateLimiterPoolFees = decodePodAlignedFeeRateLimiter(data);
|
|
11786
12672
|
rateLimiterApplied = isRateLimiterApplied(
|
|
11787
|
-
|
|
11788
|
-
maxLimiterDuration,
|
|
11789
|
-
maxFeeBps,
|
|
11790
|
-
|
|
12673
|
+
rateLimiterPoolFees.referenceAmount,
|
|
12674
|
+
rateLimiterPoolFees.maxLimiterDuration,
|
|
12675
|
+
rateLimiterPoolFees.maxFeeBps,
|
|
12676
|
+
rateLimiterPoolFees.feeIncrementBps,
|
|
11791
12677
|
currentPoint,
|
|
11792
12678
|
poolState.activationPoint,
|
|
11793
12679
|
tradeDirection
|
|
@@ -11884,20 +12770,21 @@ var CpAmm = class {
|
|
|
11884
12770
|
}
|
|
11885
12771
|
let { poolState } = params;
|
|
11886
12772
|
poolState = poolState != null ? poolState : yield this.fetchPoolState(pool);
|
|
11887
|
-
const
|
|
11888
|
-
|
|
11889
|
-
|
|
12773
|
+
const data = Buffer.from(poolState.poolFees.baseFee.baseFeeInfo.data);
|
|
12774
|
+
const modeIndex = data.readUInt8(8);
|
|
12775
|
+
const baseFeeMode = modeIndex;
|
|
11890
12776
|
let rateLimiterApplied = false;
|
|
11891
|
-
if (
|
|
12777
|
+
if (baseFeeMode === 2 /* RateLimiter */) {
|
|
11892
12778
|
const currentPoint = yield getCurrentPoint(
|
|
11893
12779
|
this._program.provider.connection,
|
|
11894
12780
|
poolState.activationType
|
|
11895
12781
|
);
|
|
12782
|
+
const rateLimiterPoolFees = decodePodAlignedFeeRateLimiter(data);
|
|
11896
12783
|
rateLimiterApplied = isRateLimiterApplied(
|
|
11897
|
-
|
|
11898
|
-
maxLimiterDuration,
|
|
11899
|
-
maxFeeBps,
|
|
11900
|
-
|
|
12784
|
+
rateLimiterPoolFees.referenceAmount,
|
|
12785
|
+
rateLimiterPoolFees.maxLimiterDuration,
|
|
12786
|
+
rateLimiterPoolFees.maxFeeBps,
|
|
12787
|
+
rateLimiterPoolFees.feeIncrementBps,
|
|
11901
12788
|
currentPoint,
|
|
11902
12789
|
poolState.activationPoint,
|
|
11903
12790
|
tradeDirection
|
|
@@ -12166,7 +13053,7 @@ var CpAmm = class {
|
|
|
12166
13053
|
);
|
|
12167
13054
|
return total.add(available);
|
|
12168
13055
|
},
|
|
12169
|
-
new
|
|
13056
|
+
new BN19(0)
|
|
12170
13057
|
);
|
|
12171
13058
|
positionBLiquidityDelta = positionBLiquidityDelta.add(
|
|
12172
13059
|
totalAvailableVestingLiquidity
|
|
@@ -12737,8 +13624,10 @@ export {
|
|
|
12737
13624
|
DYNAMIC_FEE_ROUNDING_OFFSET,
|
|
12738
13625
|
DYNAMIC_FEE_SCALING_FACTOR,
|
|
12739
13626
|
FEE_DENOMINATOR,
|
|
13627
|
+
FEE_PADDING,
|
|
13628
|
+
FeeMarketCapScheduler,
|
|
12740
13629
|
FeeRateLimiter,
|
|
12741
|
-
|
|
13630
|
+
FeeTimeScheduler,
|
|
12742
13631
|
LIQUIDITY_SCALE,
|
|
12743
13632
|
MAX,
|
|
12744
13633
|
MAX_CU_BUFFER,
|
|
@@ -12779,10 +13668,18 @@ export {
|
|
|
12779
13668
|
convertToFeeSchedulerSecondFactor,
|
|
12780
13669
|
convertToLamports,
|
|
12781
13670
|
convertToRateLimiterSecondFactor,
|
|
13671
|
+
cpAmmCoder,
|
|
12782
13672
|
decimalToQ64,
|
|
13673
|
+
decodeFeeMarketCapSchedulerParams,
|
|
13674
|
+
decodeFeeRateLimiterParams,
|
|
13675
|
+
decodeFeeTimeSchedulerParams,
|
|
13676
|
+
decodePodAlignedFeeMarketCapScheduler,
|
|
13677
|
+
decodePodAlignedFeeRateLimiter,
|
|
13678
|
+
decodePodAlignedFeeTimeScheduler,
|
|
12783
13679
|
deriveClaimFeeOperatorAddress,
|
|
12784
13680
|
deriveConfigAddress,
|
|
12785
13681
|
deriveCustomizablePoolAddress,
|
|
13682
|
+
deriveOperatorAddress,
|
|
12786
13683
|
derivePoolAddress,
|
|
12787
13684
|
derivePoolAuthority,
|
|
12788
13685
|
derivePositionAddress,
|
|
@@ -12790,6 +13687,9 @@ export {
|
|
|
12790
13687
|
deriveRewardVaultAddress,
|
|
12791
13688
|
deriveTokenBadgeAddress,
|
|
12792
13689
|
deriveTokenVaultAddress,
|
|
13690
|
+
encodeFeeMarketCapSchedulerParams,
|
|
13691
|
+
encodeFeeRateLimiterParams,
|
|
13692
|
+
encodeFeeTimeSchedulerParams,
|
|
12793
13693
|
feeNumeratorToBps,
|
|
12794
13694
|
fromDecimalToBN,
|
|
12795
13695
|
getAllPositionNftAccountByOwner,
|
|
@@ -12799,8 +13699,6 @@ export {
|
|
|
12799
13699
|
getAmountWithSlippage,
|
|
12800
13700
|
getAvailableVestingLiquidity,
|
|
12801
13701
|
getBaseFeeHandler,
|
|
12802
|
-
getBaseFeeNumerator,
|
|
12803
|
-
getBaseFeeNumeratorByPeriod,
|
|
12804
13702
|
getBaseFeeParams,
|
|
12805
13703
|
getCheckedAmounts,
|
|
12806
13704
|
getCurrentPoint,
|
|
@@ -12811,13 +13709,20 @@ export {
|
|
|
12811
13709
|
getExcludedFeeAmount,
|
|
12812
13710
|
getExcludedFeeAmountFromIncludedFeeAmount,
|
|
12813
13711
|
getFeeInPeriod,
|
|
13712
|
+
getFeeMarketCapBaseFeeNumerator,
|
|
13713
|
+
getFeeMarketCapBaseFeeNumeratorByPeriod,
|
|
13714
|
+
getFeeMarketCapMinBaseFeeNumerator,
|
|
13715
|
+
getFeeMarketCapSchedulerParams,
|
|
12814
13716
|
getFeeMode,
|
|
12815
13717
|
getFeeNumeratorFromExcludedFeeAmount,
|
|
12816
13718
|
getFeeNumeratorFromIncludedFeeAmount,
|
|
12817
13719
|
getFeeNumeratorOnExponentialFeeScheduler,
|
|
12818
13720
|
getFeeNumeratorOnLinearFeeScheduler,
|
|
12819
13721
|
getFeeOnAmount,
|
|
12820
|
-
|
|
13722
|
+
getFeeTimeBaseFeeNumerator,
|
|
13723
|
+
getFeeTimeBaseFeeNumeratorByPeriod,
|
|
13724
|
+
getFeeTimeMinBaseFeeNumerator,
|
|
13725
|
+
getFeeTimeSchedulerParams,
|
|
12821
13726
|
getFirstKey,
|
|
12822
13727
|
getIncludedFeeAmount,
|
|
12823
13728
|
getLiquidityDeltaFromAmountA,
|
|
@@ -12827,7 +13732,6 @@ export {
|
|
|
12827
13732
|
getMaxFeeBps,
|
|
12828
13733
|
getMaxFeeNumerator,
|
|
12829
13734
|
getMaxIndex,
|
|
12830
|
-
getMinBaseFeeNumerator,
|
|
12831
13735
|
getNextSqrtPriceFromAmountInARoundingUp,
|
|
12832
13736
|
getNextSqrtPriceFromAmountInBRoundingDown,
|
|
12833
13737
|
getNextSqrtPriceFromAmountOutARoundingUp,
|
|
@@ -12855,6 +13759,7 @@ export {
|
|
|
12855
13759
|
getUnClaimLpFee,
|
|
12856
13760
|
getUserRewardPending,
|
|
12857
13761
|
hasPartner,
|
|
13762
|
+
hasTransferHookExtension,
|
|
12858
13763
|
isDynamicFeeEnabled,
|
|
12859
13764
|
isNonZeroRateLimiter,
|
|
12860
13765
|
isRateLimiterApplied,
|
|
@@ -12873,11 +13778,18 @@ export {
|
|
|
12873
13778
|
swapQuoteExactInput,
|
|
12874
13779
|
swapQuoteExactOutput,
|
|
12875
13780
|
swapQuotePartialInput,
|
|
13781
|
+
toBorshFeeTimeScheduler,
|
|
12876
13782
|
toNumerator,
|
|
13783
|
+
toPodAlignedFeeTimeScheduler,
|
|
12877
13784
|
unwrapSOLInstruction,
|
|
12878
13785
|
validateFeeFraction,
|
|
13786
|
+
validateFeeMarketCapBaseFeeIsStatic,
|
|
13787
|
+
validateFeeMarketCapScheduler,
|
|
12879
13788
|
validateFeeRateLimiter,
|
|
12880
|
-
|
|
13789
|
+
validateFeeRateLimiterBaseFeeIsStatic,
|
|
13790
|
+
validateFeeTimeScheduler,
|
|
13791
|
+
validateFeeTimeSchedulerBaseFeeIsStatic,
|
|
13792
|
+
validateNoTransferHook,
|
|
12881
13793
|
vestingByPositionFilter,
|
|
12882
13794
|
wrapSOLInstruction
|
|
12883
13795
|
};
|