@drift-labs/sdk 0.1.28 → 0.1.29
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/lib/accounts/bulkAccountLoader.js +13 -3
- package/lib/clearingHouse.d.ts +4 -1
- package/lib/clearingHouse.js +49 -0
- package/lib/constants/markets.js +11 -0
- package/lib/idl/clearing_house.json +63 -2
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/math/amm.d.ts +0 -20
- package/lib/math/amm.js +1 -151
- package/lib/math/repeg.d.ts +32 -0
- package/lib/math/repeg.js +178 -0
- package/lib/oracles/pythClient.js +1 -1
- package/lib/orderParams.d.ts +1 -1
- package/lib/orderParams.js +2 -2
- package/package.json +1 -1
- package/src/accounts/bulkAccountLoader.ts +14 -4
- package/src/clearingHouse.ts +71 -0
- package/src/constants/markets.ts +12 -1
- package/src/idl/clearing_house.json +63 -2
- package/src/index.ts +1 -0
- package/src/math/amm.ts +1 -212
- package/src/math/repeg.ts +253 -0
- package/src/oracles/pythClient.ts +1 -1
- package/src/orderParams.ts +3 -2
- package/src/accounts/bulkAccountLoader.js +0 -180
- package/src/accounts/bulkAccountLoader.js.map +0 -1
- package/src/accounts/bulkUserSubscription.js +0 -56
- package/src/accounts/bulkUserSubscription.js.map +0 -1
- package/src/accounts/pollingUserAccountSubscriber.js +0 -139
- package/src/accounts/pollingUserAccountSubscriber.js.map +0 -1
- package/src/accounts/types.js +0 -11
- package/src/accounts/types.js.map +0 -1
- package/src/accounts/webSocketUserAccountSubscriber.js +0 -78
- package/src/accounts/webSocketUserAccountSubscriber.js.map +0 -1
- package/src/addresses.js +0 -59
- package/src/addresses.js.map +0 -1
- package/src/admin.js +0 -443
- package/src/admin.js.map +0 -1
- package/src/clearingHouseUser.js +0 -581
- package/src/clearingHouseUser.js.map +0 -1
- package/src/config.js +0 -37
- package/src/config.js.map +0 -1
- package/src/factory/clearingHouse.js +0 -65
- package/src/factory/clearingHouse.js.map +0 -1
- package/src/factory/clearingHouseUser.js +0 -35
- package/src/factory/clearingHouseUser.js.map +0 -1
- package/src/factory/oracleClient.js +0 -17
- package/src/factory/oracleClient.js.map +0 -1
- package/src/index.js +0 -56
- package/src/index.js.map +0 -1
- package/src/math/amm.js +0 -285
- package/src/math/amm.js.map +0 -1
- package/src/mockUSDCFaucet.js +0 -143
- package/src/mockUSDCFaucet.js.map +0 -1
- package/src/oracles/pythClient.js +0 -39
- package/src/oracles/pythClient.js.map +0 -1
- package/src/orderParams.js +0 -109
- package/src/orderParams.js.map +0 -1
- package/src/orders.js +0 -172
- package/src/orders.js.map +0 -1
- package/src/types.js +0 -61
- package/src/types.js.map +0 -1
- package/src/wallet.js +0 -23
- package/src/wallet.js.map +0 -1
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getAdmin = exports.getClearingHouse = exports.getPollingClearingHouseConfig = exports.getWebSocketClearingHouseConfig = void 0;
|
|
7
|
-
const anchor_1 = require("@project-serum/anchor");
|
|
8
|
-
const clearingHouse_1 = require("../clearingHouse");
|
|
9
|
-
const clearing_house_json_1 = __importDefault(require("../idl/clearing_house.json"));
|
|
10
|
-
const webSocketClearingHouseAccountSubscriber_1 = require("../accounts/webSocketClearingHouseAccountSubscriber");
|
|
11
|
-
const defaultTxSender_1 = require("../tx/defaultTxSender");
|
|
12
|
-
const pollingClearingHouseAccountSubscriber_1 = require("../accounts/pollingClearingHouseAccountSubscriber");
|
|
13
|
-
const admin_1 = require("../admin");
|
|
14
|
-
function getWebSocketClearingHouseConfig(connection, wallet, programID, opts = anchor_1.Provider.defaultOptions(), txSender) {
|
|
15
|
-
return {
|
|
16
|
-
type: 'websocket',
|
|
17
|
-
connection,
|
|
18
|
-
wallet,
|
|
19
|
-
programID,
|
|
20
|
-
opts,
|
|
21
|
-
txSender,
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
exports.getWebSocketClearingHouseConfig = getWebSocketClearingHouseConfig;
|
|
25
|
-
function getPollingClearingHouseConfig(connection, wallet, programID, accountLoader, opts = anchor_1.Provider.defaultOptions(), txSender) {
|
|
26
|
-
return {
|
|
27
|
-
type: 'polling',
|
|
28
|
-
connection,
|
|
29
|
-
wallet,
|
|
30
|
-
programID,
|
|
31
|
-
accountLoader,
|
|
32
|
-
opts,
|
|
33
|
-
txSender,
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
exports.getPollingClearingHouseConfig = getPollingClearingHouseConfig;
|
|
37
|
-
function getClearingHouse(config) {
|
|
38
|
-
const provider = new anchor_1.Provider(config.connection, config.wallet, config.opts);
|
|
39
|
-
const program = new anchor_1.Program(clearing_house_json_1.default, config.programID, provider);
|
|
40
|
-
let accountSubscriber;
|
|
41
|
-
if (config.type === 'websocket') {
|
|
42
|
-
accountSubscriber = new webSocketClearingHouseAccountSubscriber_1.WebSocketClearingHouseAccountSubscriber(program);
|
|
43
|
-
}
|
|
44
|
-
else if (config.type === 'polling') {
|
|
45
|
-
accountSubscriber = new pollingClearingHouseAccountSubscriber_1.PollingClearingHouseAccountSubscriber(program, config.accountLoader);
|
|
46
|
-
}
|
|
47
|
-
const txSender = config.txSender || new defaultTxSender_1.DefaultTxSender(provider);
|
|
48
|
-
return new clearingHouse_1.ClearingHouse(config.connection, config.wallet, program, accountSubscriber, txSender, config.opts);
|
|
49
|
-
}
|
|
50
|
-
exports.getClearingHouse = getClearingHouse;
|
|
51
|
-
function getAdmin(config) {
|
|
52
|
-
const provider = new anchor_1.Provider(config.connection, config.wallet, config.opts);
|
|
53
|
-
const program = new anchor_1.Program(clearing_house_json_1.default, config.programID, provider);
|
|
54
|
-
let accountSubscriber;
|
|
55
|
-
if (config.type === 'websocket') {
|
|
56
|
-
accountSubscriber = new webSocketClearingHouseAccountSubscriber_1.WebSocketClearingHouseAccountSubscriber(program);
|
|
57
|
-
}
|
|
58
|
-
else if (config.type === 'polling') {
|
|
59
|
-
accountSubscriber = new pollingClearingHouseAccountSubscriber_1.PollingClearingHouseAccountSubscriber(program, config.accountLoader);
|
|
60
|
-
}
|
|
61
|
-
const txSender = config.txSender || new defaultTxSender_1.DefaultTxSender(provider);
|
|
62
|
-
return new admin_1.Admin(config.connection, config.wallet, program, accountSubscriber, txSender, config.opts);
|
|
63
|
-
}
|
|
64
|
-
exports.getAdmin = getAdmin;
|
|
65
|
-
//# sourceMappingURL=clearingHouse.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clearingHouse.js","sourceRoot":"","sources":["clearingHouse.ts"],"names":[],"mappings":";;;;;;AAIA,kDAA+D;AAC/D,oDAAiD;AACjD,qFAA0D;AAC1D,iHAA8G;AAC9G,2DAAwD;AAExD,6GAA0G;AAC1G,oCAAiC;AAuBjC,SAAgB,+BAA+B,CAC9C,UAAsB,EACtB,MAAe,EACf,SAAoB,EACpB,OAAuB,iBAAQ,CAAC,cAAc,EAAE,EAChD,QAAmB;IAEnB,OAAO;QACN,IAAI,EAAE,WAAW;QACjB,UAAU;QACV,MAAM;QACN,SAAS;QACT,IAAI;QACJ,QAAQ;KACR,CAAC;AACH,CAAC;AAfD,0EAeC;AAED,SAAgB,6BAA6B,CAC5C,UAAsB,EACtB,MAAe,EACf,SAAoB,EACpB,aAAgC,EAChC,OAAuB,iBAAQ,CAAC,cAAc,EAAE,EAChD,QAAmB;IAEnB,OAAO;QACN,IAAI,EAAE,SAAS;QACf,UAAU;QACV,MAAM;QACN,SAAS;QACT,aAAa;QACb,IAAI;QACJ,QAAQ;KACR,CAAC;AACH,CAAC;AAjBD,sEAiBC;AAED,SAAgB,gBAAgB,CAAC,MAA2B;IAC3D,MAAM,QAAQ,GAAG,IAAI,iBAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,IAAI,gBAAO,CAC1B,6BAAuB,EACvB,MAAM,CAAC,SAAS,EAChB,QAAQ,CACR,CAAC;IACF,IAAI,iBAAiD,CAAC;IACtD,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE;QAChC,iBAAiB,GAAG,IAAI,iFAAuC,CAAC,OAAO,CAAC,CAAC;KACzE;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;QACrC,iBAAiB,GAAG,IAAI,6EAAqC,CAC5D,OAAO,EACN,MAA4C,CAAC,aAAa,CAC3D,CAAC;KACF;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,iCAAe,CAAC,QAAQ,CAAC,CAAC;IAClE,OAAO,IAAI,6BAAa,CACvB,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,MAAM,EACb,OAAO,EACP,iBAAiB,EACjB,QAAQ,EACR,MAAM,CAAC,IAAI,CACX,CAAC;AACH,CAAC;AA1BD,4CA0BC;AAED,SAAgB,QAAQ,CAAC,MAA2B;IACnD,MAAM,QAAQ,GAAG,IAAI,iBAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,IAAI,gBAAO,CAC1B,6BAAuB,EACvB,MAAM,CAAC,SAAS,EAChB,QAAQ,CACR,CAAC;IACF,IAAI,iBAAiD,CAAC;IACtD,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE;QAChC,iBAAiB,GAAG,IAAI,iFAAuC,CAAC,OAAO,CAAC,CAAC;KACzE;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;QACrC,iBAAiB,GAAG,IAAI,6EAAqC,CAC5D,OAAO,EACN,MAA4C,CAAC,aAAa,CAC3D,CAAC;KACF;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,iCAAe,CAAC,QAAQ,CAAC,CAAC;IAClE,OAAO,IAAI,aAAK,CACf,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,MAAM,EACb,OAAO,EACP,iBAAiB,EACjB,QAAQ,EACR,MAAM,CAAC,IAAI,CACX,CAAC;AACH,CAAC;AA1BD,4BA0BC"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getClearingHouseUser = exports.getPollingClearingHouseUserConfig = exports.getWebSocketClearingHouseUserConfig = void 0;
|
|
4
|
-
const clearingHouseUser_1 = require("../clearingHouseUser");
|
|
5
|
-
const webSocketUserAccountSubscriber_1 = require("../accounts/webSocketUserAccountSubscriber");
|
|
6
|
-
const pollingUserAccountSubscriber_1 = require("../accounts/pollingUserAccountSubscriber");
|
|
7
|
-
function getWebSocketClearingHouseUserConfig(clearingHouse, authority) {
|
|
8
|
-
return {
|
|
9
|
-
type: 'websocket',
|
|
10
|
-
clearingHouse,
|
|
11
|
-
authority,
|
|
12
|
-
};
|
|
13
|
-
}
|
|
14
|
-
exports.getWebSocketClearingHouseUserConfig = getWebSocketClearingHouseUserConfig;
|
|
15
|
-
function getPollingClearingHouseUserConfig(clearingHouse, authority, accountLoader) {
|
|
16
|
-
return {
|
|
17
|
-
type: 'polling',
|
|
18
|
-
clearingHouse,
|
|
19
|
-
authority,
|
|
20
|
-
accountLoader,
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
exports.getPollingClearingHouseUserConfig = getPollingClearingHouseUserConfig;
|
|
24
|
-
function getClearingHouseUser(config) {
|
|
25
|
-
let accountSubscriber;
|
|
26
|
-
if (config.type === 'websocket') {
|
|
27
|
-
accountSubscriber = new webSocketUserAccountSubscriber_1.WebSocketUserAccountSubscriber(config.clearingHouse.program, config.authority);
|
|
28
|
-
}
|
|
29
|
-
else if (config.type === 'polling') {
|
|
30
|
-
accountSubscriber = new pollingUserAccountSubscriber_1.PollingUserAccountSubscriber(config.clearingHouse.program, config.authority, config.accountLoader);
|
|
31
|
-
}
|
|
32
|
-
return new clearingHouseUser_1.ClearingHouseUser(config.clearingHouse, config.authority, accountSubscriber);
|
|
33
|
-
}
|
|
34
|
-
exports.getClearingHouseUser = getClearingHouseUser;
|
|
35
|
-
//# sourceMappingURL=clearingHouseUser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clearingHouseUser.js","sourceRoot":"","sources":["clearingHouseUser.ts"],"names":[],"mappings":";;;AAGA,4DAAyD;AAEzD,+FAA4F;AAC5F,2FAAwF;AAoBxF,SAAgB,mCAAmC,CAClD,aAA4B,EAC5B,SAAoB;IAEpB,OAAO;QACN,IAAI,EAAE,WAAW;QACjB,aAAa;QACb,SAAS;KACT,CAAC;AACH,CAAC;AATD,kFASC;AAED,SAAgB,iCAAiC,CAChD,aAA4B,EAC5B,SAAoB,EACpB,aAAgC;IAEhC,OAAO;QACN,IAAI,EAAE,SAAS;QACf,aAAa;QACb,SAAS;QACT,aAAa;KACb,CAAC;AACH,CAAC;AAXD,8EAWC;AAED,SAAgB,oBAAoB,CACnC,MAA+B;IAE/B,IAAI,iBAAwC,CAAC;IAC7C,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE;QAChC,iBAAiB,GAAG,IAAI,+DAA8B,CACrD,MAAM,CAAC,aAAa,CAAC,OAAO,EAC5B,MAAM,CAAC,SAAS,CAChB,CAAC;KACF;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE;QACrC,iBAAiB,GAAG,IAAI,2DAA4B,CACnD,MAAM,CAAC,aAAa,CAAC,OAAO,EAC5B,MAAM,CAAC,SAAS,EACf,MAAyC,CAAC,aAAa,CACxD,CAAC;KACF;IAED,OAAO,IAAI,qCAAiB,CAC3B,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,SAAS,EAChB,iBAAiB,CACjB,CAAC;AACH,CAAC;AAtBD,oDAsBC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getOracleClient = void 0;
|
|
4
|
-
const types_1 = require("../types");
|
|
5
|
-
const pythClient_1 = require("../oracles/pythClient");
|
|
6
|
-
const switchboardClient_1 = require("../oracles/switchboardClient");
|
|
7
|
-
function getOracleClient(oracleSource, connection, env) {
|
|
8
|
-
if ((0, types_1.isVariant)(oracleSource, 'pyth')) {
|
|
9
|
-
return new pythClient_1.PythClient(connection);
|
|
10
|
-
}
|
|
11
|
-
if ((0, types_1.isVariant)(oracleSource, 'switchboard')) {
|
|
12
|
-
return new switchboardClient_1.SwitchboardClient(connection, env);
|
|
13
|
-
}
|
|
14
|
-
throw new Error(`Unknown oracle source ${oracleSource}`);
|
|
15
|
-
}
|
|
16
|
-
exports.getOracleClient = getOracleClient;
|
|
17
|
-
//# sourceMappingURL=oracleClient.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oracleClient.js","sourceRoot":"","sources":["oracleClient.ts"],"names":[],"mappings":";;;AAAA,oCAAmD;AAInD,sDAAmD;AACnD,oEAAiE;AAEjE,SAAgB,eAAe,CAC9B,YAA0B,EAC1B,UAAsB,EACtB,GAAa;IAEb,IAAI,IAAA,iBAAS,EAAC,YAAY,EAAE,MAAM,CAAC,EAAE;QACpC,OAAO,IAAI,uBAAU,CAAC,UAAU,CAAC,CAAC;KAClC;IAED,IAAI,IAAA,iBAAS,EAAC,YAAY,EAAE,aAAa,CAAC,EAAE;QAC3C,OAAO,IAAI,qCAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;KAC9C;IAED,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;AAC1D,CAAC;AAdD,0CAcC"}
|
package/src/index.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.PublicKey = exports.BN = void 0;
|
|
14
|
-
const anchor_1 = require("@project-serum/anchor");
|
|
15
|
-
Object.defineProperty(exports, "BN", { enumerable: true, get: function () { return anchor_1.BN; } });
|
|
16
|
-
const web3_js_1 = require("@solana/web3.js");
|
|
17
|
-
Object.defineProperty(exports, "PublicKey", { enumerable: true, get: function () { return web3_js_1.PublicKey; } });
|
|
18
|
-
__exportStar(require("./mockUSDCFaucet"), exports);
|
|
19
|
-
__exportStar(require("./oracles/types"), exports);
|
|
20
|
-
__exportStar(require("./oracles/pythClient"), exports);
|
|
21
|
-
__exportStar(require("./oracles/switchboardClient"), exports);
|
|
22
|
-
__exportStar(require("./types"), exports);
|
|
23
|
-
__exportStar(require("./constants/markets"), exports);
|
|
24
|
-
__exportStar(require("./accounts/webSocketClearingHouseAccountSubscriber"), exports);
|
|
25
|
-
__exportStar(require("./accounts/bulkAccountLoader"), exports);
|
|
26
|
-
__exportStar(require("./accounts/bulkUserSubscription"), exports);
|
|
27
|
-
__exportStar(require("./accounts/pollingClearingHouseAccountSubscriber"), exports);
|
|
28
|
-
__exportStar(require("./accounts/pollingOracleSubscriber"), exports);
|
|
29
|
-
__exportStar(require("./accounts/pollingTokenAccountSubscriber"), exports);
|
|
30
|
-
__exportStar(require("./accounts/types"), exports);
|
|
31
|
-
__exportStar(require("./addresses"), exports);
|
|
32
|
-
__exportStar(require("./admin"), exports);
|
|
33
|
-
__exportStar(require("./clearingHouseUser"), exports);
|
|
34
|
-
__exportStar(require("./clearingHouse"), exports);
|
|
35
|
-
__exportStar(require("./factory/clearingHouse"), exports);
|
|
36
|
-
__exportStar(require("./factory/clearingHouseUser"), exports);
|
|
37
|
-
__exportStar(require("./factory/oracleClient"), exports);
|
|
38
|
-
__exportStar(require("./math/conversion"), exports);
|
|
39
|
-
__exportStar(require("./math/funding"), exports);
|
|
40
|
-
__exportStar(require("./math/insuranceFund"), exports);
|
|
41
|
-
__exportStar(require("./math/market"), exports);
|
|
42
|
-
__exportStar(require("./math/position"), exports);
|
|
43
|
-
__exportStar(require("./math/amm"), exports);
|
|
44
|
-
__exportStar(require("./math/trade"), exports);
|
|
45
|
-
__exportStar(require("./math/orders"), exports);
|
|
46
|
-
__exportStar(require("./orders"), exports);
|
|
47
|
-
__exportStar(require("./orderParams"), exports);
|
|
48
|
-
__exportStar(require("./wallet"), exports);
|
|
49
|
-
__exportStar(require("./types"), exports);
|
|
50
|
-
__exportStar(require("./math/utils"), exports);
|
|
51
|
-
__exportStar(require("./config"), exports);
|
|
52
|
-
__exportStar(require("./constants/numericConstants"), exports);
|
|
53
|
-
__exportStar(require("./tx/retryTxSender"), exports);
|
|
54
|
-
__exportStar(require("./util/computeUnits"), exports);
|
|
55
|
-
__exportStar(require("./util/tps"), exports);
|
|
56
|
-
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,kDAA2C;AA0ClC,mFA1CA,WAAE,OA0CA;AAzCX,6CAA4C;AAyC/B,0FAzCJ,mBAAS,OAyCI;AAvCtB,mDAAiC;AACjC,kDAAgC;AAChC,uDAAqC;AACrC,8DAA4C;AAC5C,0CAAwB;AACxB,sDAAoC;AACpC,qFAAmE;AACnE,+DAA6C;AAC7C,kEAAgD;AAChD,mFAAiE;AACjE,qEAAmD;AACnD,2EAAyD;AACzD,mDAAiC;AACjC,8CAA4B;AAC5B,0CAAwB;AACxB,sDAAoC;AACpC,kDAAgC;AAChC,0DAAwC;AACxC,8DAA4C;AAC5C,yDAAuC;AACvC,oDAAkC;AAClC,iDAA+B;AAC/B,uDAAqC;AACrC,gDAA8B;AAC9B,kDAAgC;AAChC,6CAA2B;AAC3B,+CAA6B;AAC7B,gDAA8B;AAC9B,2CAAyB;AACzB,gDAA8B;AAC9B,2CAAyB;AACzB,0CAAwB;AACxB,+CAA6B;AAC7B,2CAAyB;AACzB,+DAA6C;AAC7C,qDAAmC;AACnC,sDAAoC;AACpC,6CAA2B"}
|
package/src/math/amm.js
DELETED
|
@@ -1,285 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.calculateBudgetedPeg = exports.calculateBudgetedK = exports.calculateMaxBaseAssetAmountToTrade = exports.calculateTerminalPrice = exports.calculateRepegCost = exports.calculateAdjustKCost = exports.getSwapDirection = exports.calculateSwapOutput = exports.calculateAmmReservesAfterSwap = exports.calculatePrice = void 0;
|
|
4
|
-
const anchor_1 = require("@project-serum/anchor");
|
|
5
|
-
const numericConstants_1 = require("../constants/numericConstants");
|
|
6
|
-
const position_1 = require("./position");
|
|
7
|
-
const types_1 = require("../types");
|
|
8
|
-
const assert_1 = require("../assert/assert");
|
|
9
|
-
const __1 = require("..");
|
|
10
|
-
/**
|
|
11
|
-
* Calculates a price given an arbitrary base and quote amount (they must have the same precision)
|
|
12
|
-
*
|
|
13
|
-
* @param baseAssetAmount
|
|
14
|
-
* @param quoteAssetAmount
|
|
15
|
-
* @param peg_multiplier
|
|
16
|
-
* @returns price : Precision MARK_PRICE_PRECISION
|
|
17
|
-
*/
|
|
18
|
-
function calculatePrice(baseAssetAmount, quoteAssetAmount, peg_multiplier) {
|
|
19
|
-
if (baseAssetAmount.abs().lte(numericConstants_1.ZERO)) {
|
|
20
|
-
return new anchor_1.BN(0);
|
|
21
|
-
}
|
|
22
|
-
return quoteAssetAmount
|
|
23
|
-
.mul(numericConstants_1.MARK_PRICE_PRECISION)
|
|
24
|
-
.mul(peg_multiplier)
|
|
25
|
-
.div(numericConstants_1.PEG_PRECISION)
|
|
26
|
-
.div(baseAssetAmount);
|
|
27
|
-
}
|
|
28
|
-
exports.calculatePrice = calculatePrice;
|
|
29
|
-
/**
|
|
30
|
-
* Calculates what the amm reserves would be after swapping a quote or base asset amount.
|
|
31
|
-
*
|
|
32
|
-
* @param amm
|
|
33
|
-
* @param inputAssetType
|
|
34
|
-
* @param swapAmount
|
|
35
|
-
* @param swapDirection
|
|
36
|
-
* @returns quoteAssetReserve and baseAssetReserve after swap. : Precision AMM_RESERVE_PRECISION
|
|
37
|
-
*/
|
|
38
|
-
function calculateAmmReservesAfterSwap(amm, inputAssetType, swapAmount, swapDirection) {
|
|
39
|
-
(0, assert_1.assert)(swapAmount.gte(numericConstants_1.ZERO), 'swapAmount must be greater than 0');
|
|
40
|
-
let newQuoteAssetReserve;
|
|
41
|
-
let newBaseAssetReserve;
|
|
42
|
-
if (inputAssetType === 'quote') {
|
|
43
|
-
swapAmount = swapAmount
|
|
44
|
-
.mul(numericConstants_1.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO)
|
|
45
|
-
.div(amm.pegMultiplier);
|
|
46
|
-
[newQuoteAssetReserve, newBaseAssetReserve] = calculateSwapOutput(amm.quoteAssetReserve, swapAmount, swapDirection, amm.sqrtK.mul(amm.sqrtK));
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
[newBaseAssetReserve, newQuoteAssetReserve] = calculateSwapOutput(amm.baseAssetReserve, swapAmount, swapDirection, amm.sqrtK.mul(amm.sqrtK));
|
|
50
|
-
}
|
|
51
|
-
return [newQuoteAssetReserve, newBaseAssetReserve];
|
|
52
|
-
}
|
|
53
|
-
exports.calculateAmmReservesAfterSwap = calculateAmmReservesAfterSwap;
|
|
54
|
-
/**
|
|
55
|
-
* Helper function calculating constant product curve output. Agnostic to whether input asset is quote or base
|
|
56
|
-
*
|
|
57
|
-
* @param inputAssetReserve
|
|
58
|
-
* @param swapAmount
|
|
59
|
-
* @param swapDirection
|
|
60
|
-
* @param invariant
|
|
61
|
-
* @returns newInputAssetReserve and newOutputAssetReserve after swap. : Precision AMM_RESERVE_PRECISION
|
|
62
|
-
*/
|
|
63
|
-
function calculateSwapOutput(inputAssetReserve, swapAmount, swapDirection, invariant) {
|
|
64
|
-
let newInputAssetReserve;
|
|
65
|
-
if (swapDirection === types_1.SwapDirection.ADD) {
|
|
66
|
-
newInputAssetReserve = inputAssetReserve.add(swapAmount);
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
newInputAssetReserve = inputAssetReserve.sub(swapAmount);
|
|
70
|
-
}
|
|
71
|
-
const newOutputAssetReserve = invariant.div(newInputAssetReserve);
|
|
72
|
-
return [newInputAssetReserve, newOutputAssetReserve];
|
|
73
|
-
}
|
|
74
|
-
exports.calculateSwapOutput = calculateSwapOutput;
|
|
75
|
-
/**
|
|
76
|
-
* Translate long/shorting quote/base asset into amm operation
|
|
77
|
-
*
|
|
78
|
-
* @param inputAssetType
|
|
79
|
-
* @param positionDirection
|
|
80
|
-
*/
|
|
81
|
-
function getSwapDirection(inputAssetType, positionDirection) {
|
|
82
|
-
if ((0, types_1.isVariant)(positionDirection, 'long') && inputAssetType === 'base') {
|
|
83
|
-
return types_1.SwapDirection.REMOVE;
|
|
84
|
-
}
|
|
85
|
-
if ((0, types_1.isVariant)(positionDirection, 'short') && inputAssetType === 'quote') {
|
|
86
|
-
return types_1.SwapDirection.REMOVE;
|
|
87
|
-
}
|
|
88
|
-
return types_1.SwapDirection.ADD;
|
|
89
|
-
}
|
|
90
|
-
exports.getSwapDirection = getSwapDirection;
|
|
91
|
-
/**
|
|
92
|
-
* Helper function calculating adjust k cost
|
|
93
|
-
* @param market
|
|
94
|
-
* @param marketIndex
|
|
95
|
-
* @param numerator
|
|
96
|
-
* @param denomenator
|
|
97
|
-
* @returns cost : Precision QUOTE_ASSET_PRECISION
|
|
98
|
-
*/
|
|
99
|
-
function calculateAdjustKCost(market, marketIndex, numerator, denomenator) {
|
|
100
|
-
const netUserPosition = {
|
|
101
|
-
baseAssetAmount: market.baseAssetAmount,
|
|
102
|
-
lastCumulativeFundingRate: market.amm.cumulativeFundingRate,
|
|
103
|
-
marketIndex: new anchor_1.BN(marketIndex),
|
|
104
|
-
quoteAssetAmount: new anchor_1.BN(0),
|
|
105
|
-
openOrders: new anchor_1.BN(0),
|
|
106
|
-
};
|
|
107
|
-
const currentValue = (0, position_1.calculateBaseAssetValue)(market, netUserPosition);
|
|
108
|
-
const marketNewK = Object.assign({}, market);
|
|
109
|
-
marketNewK.amm = Object.assign({}, market.amm);
|
|
110
|
-
marketNewK.amm.baseAssetReserve = market.amm.baseAssetReserve
|
|
111
|
-
.mul(numerator)
|
|
112
|
-
.div(denomenator);
|
|
113
|
-
marketNewK.amm.quoteAssetReserve = market.amm.quoteAssetReserve
|
|
114
|
-
.mul(numerator)
|
|
115
|
-
.div(denomenator);
|
|
116
|
-
marketNewK.amm.sqrtK = market.amm.sqrtK.mul(numerator).div(denomenator);
|
|
117
|
-
netUserPosition.quoteAssetAmount = currentValue;
|
|
118
|
-
const cost = (0, __1.calculatePositionPNL)(marketNewK, netUserPosition);
|
|
119
|
-
const p = numericConstants_1.PEG_PRECISION.mul(numerator).div(denomenator);
|
|
120
|
-
const x = market.amm.baseAssetReserve;
|
|
121
|
-
const y = market.amm.quoteAssetReserve;
|
|
122
|
-
const delta = market.baseAssetAmount;
|
|
123
|
-
const k = market.amm.sqrtK.mul(market.amm.sqrtK);
|
|
124
|
-
const numer1 = numericConstants_1.PEG_PRECISION.sub(p).mul(y).div(numericConstants_1.PEG_PRECISION);
|
|
125
|
-
const numer20 = k
|
|
126
|
-
.mul(p)
|
|
127
|
-
.mul(p)
|
|
128
|
-
.div(numericConstants_1.PEG_PRECISION)
|
|
129
|
-
.div(numericConstants_1.PEG_PRECISION)
|
|
130
|
-
.div(x.mul(p).div(numericConstants_1.PEG_PRECISION).add(delta));
|
|
131
|
-
const numer21 = k.div(x.add(delta));
|
|
132
|
-
const formulaCost = numer21
|
|
133
|
-
.sub(numer20)
|
|
134
|
-
.sub(numer1)
|
|
135
|
-
.mul(market.amm.pegMultiplier)
|
|
136
|
-
.div(numericConstants_1.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO);
|
|
137
|
-
console.log((0, __1.convertToNumber)(formulaCost, numericConstants_1.QUOTE_PRECISION));
|
|
138
|
-
// p.div(p.mul(x).add(delta)).sub()
|
|
139
|
-
return cost;
|
|
140
|
-
}
|
|
141
|
-
exports.calculateAdjustKCost = calculateAdjustKCost;
|
|
142
|
-
/**
|
|
143
|
-
* Helper function calculating adjust pegMultiplier (repeg) cost
|
|
144
|
-
*
|
|
145
|
-
* @param market
|
|
146
|
-
* @param marketIndex
|
|
147
|
-
* @param newPeg
|
|
148
|
-
* @returns cost : Precision QUOTE_ASSET_PRECISION
|
|
149
|
-
*/
|
|
150
|
-
function calculateRepegCost(market, marketIndex, newPeg) {
|
|
151
|
-
const netUserPosition = {
|
|
152
|
-
baseAssetAmount: market.baseAssetAmount,
|
|
153
|
-
lastCumulativeFundingRate: market.amm.cumulativeFundingRate,
|
|
154
|
-
marketIndex: new anchor_1.BN(marketIndex),
|
|
155
|
-
quoteAssetAmount: new anchor_1.BN(0),
|
|
156
|
-
openOrders: new anchor_1.BN(0),
|
|
157
|
-
};
|
|
158
|
-
const currentValue = (0, position_1.calculateBaseAssetValue)(market, netUserPosition);
|
|
159
|
-
netUserPosition.quoteAssetAmount = currentValue;
|
|
160
|
-
const prevMarketPrice = (0, __1.calculateMarkPrice)(market);
|
|
161
|
-
const marketNewPeg = Object.assign({}, market);
|
|
162
|
-
marketNewPeg.amm = Object.assign({}, market.amm);
|
|
163
|
-
// const marketNewPeg = JSON.parse(JSON.stringify(market));
|
|
164
|
-
marketNewPeg.amm.pegMultiplier = newPeg;
|
|
165
|
-
console.log('Price moves from', (0, __1.convertToNumber)(prevMarketPrice), 'to', (0, __1.convertToNumber)((0, __1.calculateMarkPrice)(marketNewPeg)));
|
|
166
|
-
const cost = (0, __1.calculatePositionPNL)(marketNewPeg, netUserPosition);
|
|
167
|
-
const k = market.amm.sqrtK.mul(market.amm.sqrtK);
|
|
168
|
-
const newQuoteAssetReserve = k.div(market.amm.baseAssetReserve.add(netUserPosition.baseAssetAmount));
|
|
169
|
-
const deltaQuoteAssetReserves = newQuoteAssetReserve.sub(market.amm.quoteAssetReserve);
|
|
170
|
-
const cost2 = deltaQuoteAssetReserves
|
|
171
|
-
.mul(market.amm.pegMultiplier.sub(newPeg))
|
|
172
|
-
.div(numericConstants_1.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO);
|
|
173
|
-
console.log((0, __1.convertToNumber)(cost2, numericConstants_1.QUOTE_PRECISION));
|
|
174
|
-
return cost;
|
|
175
|
-
}
|
|
176
|
-
exports.calculateRepegCost = calculateRepegCost;
|
|
177
|
-
/**
|
|
178
|
-
* Helper function calculating terminal price of amm
|
|
179
|
-
*
|
|
180
|
-
* @param market
|
|
181
|
-
* @returns cost : Precision MARK_PRICE_PRECISION
|
|
182
|
-
*/
|
|
183
|
-
function calculateTerminalPrice(market) {
|
|
184
|
-
const directionToClose = market.baseAssetAmount.gt(numericConstants_1.ZERO)
|
|
185
|
-
? types_1.PositionDirection.SHORT
|
|
186
|
-
: types_1.PositionDirection.LONG;
|
|
187
|
-
const [newQuoteAssetReserve, newBaseAssetReserve] = calculateAmmReservesAfterSwap(market.amm, 'base', market.baseAssetAmount.abs(), getSwapDirection('base', directionToClose));
|
|
188
|
-
const terminalPrice = newQuoteAssetReserve
|
|
189
|
-
.mul(numericConstants_1.MARK_PRICE_PRECISION)
|
|
190
|
-
.mul(market.amm.pegMultiplier)
|
|
191
|
-
.div(numericConstants_1.PEG_PRECISION)
|
|
192
|
-
.div(newBaseAssetReserve);
|
|
193
|
-
return terminalPrice;
|
|
194
|
-
}
|
|
195
|
-
exports.calculateTerminalPrice = calculateTerminalPrice;
|
|
196
|
-
function calculateMaxBaseAssetAmountToTrade(amm, limit_price) {
|
|
197
|
-
const invariant = amm.sqrtK.mul(amm.sqrtK);
|
|
198
|
-
const newBaseAssetReserveSquared = invariant
|
|
199
|
-
.mul(numericConstants_1.MARK_PRICE_PRECISION)
|
|
200
|
-
.mul(amm.pegMultiplier)
|
|
201
|
-
.div(limit_price)
|
|
202
|
-
.div(numericConstants_1.PEG_PRECISION);
|
|
203
|
-
const newBaseAssetReserve = (0, __1.squareRootBN)(newBaseAssetReserveSquared);
|
|
204
|
-
if (newBaseAssetReserve.gt(amm.baseAssetReserve)) {
|
|
205
|
-
return [
|
|
206
|
-
newBaseAssetReserve.sub(amm.baseAssetReserve),
|
|
207
|
-
types_1.PositionDirection.SHORT,
|
|
208
|
-
];
|
|
209
|
-
}
|
|
210
|
-
else if (newBaseAssetReserve.lt(amm.baseAssetReserve)) {
|
|
211
|
-
return [
|
|
212
|
-
amm.baseAssetReserve.sub(newBaseAssetReserve),
|
|
213
|
-
types_1.PositionDirection.LONG,
|
|
214
|
-
];
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
console.log('tradeSize Too Small');
|
|
218
|
-
return [new anchor_1.BN(0), types_1.PositionDirection.LONG];
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
exports.calculateMaxBaseAssetAmountToTrade = calculateMaxBaseAssetAmountToTrade;
|
|
222
|
-
function calculateBudgetedK(market, cost) {
|
|
223
|
-
// wolframalpha.com
|
|
224
|
-
// (1/(x+d) - p/(x*p+d))*y*d*Q = C solve for p
|
|
225
|
-
// p = (d(y*d*Q - C(x+d))) / (C*x(x+d) + y*y*d*Q)
|
|
226
|
-
// todo: assumes k = x * y
|
|
227
|
-
// otherwise use: (y(1-p) + (kp^2/(x*p+d)) - k/(x+d)) * Q = C solve for p
|
|
228
|
-
// const k = market.amm.sqrtK.mul(market.amm.sqrtK);
|
|
229
|
-
const x = market.amm.baseAssetReserve;
|
|
230
|
-
const y = market.amm.quoteAssetReserve;
|
|
231
|
-
const d = market.baseAssetAmount;
|
|
232
|
-
const Q = market.amm.pegMultiplier;
|
|
233
|
-
const C = cost.mul(new anchor_1.BN(-1));
|
|
234
|
-
const numer1 = y.mul(d).mul(Q).div(numericConstants_1.AMM_RESERVE_PRECISION).div(numericConstants_1.PEG_PRECISION);
|
|
235
|
-
const numer2 = C.mul(x.add(d)).div(numericConstants_1.QUOTE_PRECISION);
|
|
236
|
-
const denom1 = C.mul(x)
|
|
237
|
-
.mul(x.add(d))
|
|
238
|
-
.div(numericConstants_1.AMM_RESERVE_PRECISION)
|
|
239
|
-
.div(numericConstants_1.QUOTE_PRECISION);
|
|
240
|
-
const denom2 = y
|
|
241
|
-
.mul(d)
|
|
242
|
-
.mul(d)
|
|
243
|
-
.mul(Q)
|
|
244
|
-
.div(numericConstants_1.AMM_RESERVE_PRECISION)
|
|
245
|
-
.div(numericConstants_1.AMM_RESERVE_PRECISION)
|
|
246
|
-
.div(numericConstants_1.PEG_PRECISION);
|
|
247
|
-
const numerator = d
|
|
248
|
-
.mul(numer1.add(numer2))
|
|
249
|
-
.div(numericConstants_1.AMM_RESERVE_PRECISION)
|
|
250
|
-
.div(numericConstants_1.AMM_RESERVE_PRECISION)
|
|
251
|
-
.div(numericConstants_1.AMM_TO_QUOTE_PRECISION_RATIO);
|
|
252
|
-
const denominator = denom1
|
|
253
|
-
.add(denom2)
|
|
254
|
-
.div(numericConstants_1.AMM_RESERVE_PRECISION)
|
|
255
|
-
.div(numericConstants_1.AMM_TO_QUOTE_PRECISION_RATIO);
|
|
256
|
-
console.log(numerator, denominator);
|
|
257
|
-
// const p = (numerator).div(denominator);
|
|
258
|
-
// const formulaCost = (numer21.sub(numer20).sub(numer1)).mul(market.amm.pegMultiplier).div(AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO)
|
|
259
|
-
// console.log(convertToNumber(formulaCost, QUOTE_PRECISION))
|
|
260
|
-
return [numerator, denominator];
|
|
261
|
-
}
|
|
262
|
-
exports.calculateBudgetedK = calculateBudgetedK;
|
|
263
|
-
function calculateBudgetedPeg(market, cost) {
|
|
264
|
-
// wolframalpha.com
|
|
265
|
-
// (1/(x+d) - p/(x*p+d))*y*d*Q = C solve for p
|
|
266
|
-
// p = (d(y*d*Q - C(x+d))) / (C*x(x+d) + y*y*d*Q)
|
|
267
|
-
// todo: assumes k = x * y
|
|
268
|
-
// otherwise use: (y(1-p) + (kp^2/(x*p+d)) - k/(x+d)) * Q = C solve for p
|
|
269
|
-
const k = market.amm.sqrtK.mul(market.amm.sqrtK);
|
|
270
|
-
const x = market.amm.baseAssetReserve;
|
|
271
|
-
const y = market.amm.quoteAssetReserve;
|
|
272
|
-
const d = market.baseAssetAmount;
|
|
273
|
-
const Q = market.amm.pegMultiplier;
|
|
274
|
-
const C = cost.mul(new anchor_1.BN(-1));
|
|
275
|
-
const deltaQuoteAssetReserves = y.sub(k.div(x.add(d)));
|
|
276
|
-
const deltaPegMultiplier = C.mul(numericConstants_1.MARK_PRICE_PRECISION)
|
|
277
|
-
.div(deltaQuoteAssetReserves.div(numericConstants_1.AMM_TO_QUOTE_PRECISION_RATIO))
|
|
278
|
-
.mul(numericConstants_1.PEG_PRECISION)
|
|
279
|
-
.div(numericConstants_1.QUOTE_PRECISION);
|
|
280
|
-
console.log(Q.toNumber(), 'change by', deltaPegMultiplier.toNumber() / numericConstants_1.MARK_PRICE_PRECISION.toNumber());
|
|
281
|
-
const newPeg = Q.sub(deltaPegMultiplier.mul(numericConstants_1.PEG_PRECISION).div(numericConstants_1.MARK_PRICE_PRECISION));
|
|
282
|
-
return newPeg;
|
|
283
|
-
}
|
|
284
|
-
exports.calculateBudgetedPeg = calculateBudgetedPeg;
|
|
285
|
-
//# sourceMappingURL=amm.js.map
|
package/src/math/amm.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"amm.js","sourceRoot":"","sources":["amm.ts"],"names":[],"mappings":"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"}
|
package/src/mockUSDCFaucet.js
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
22
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
|
-
};
|
|
24
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
exports.MockUSDCFaucet = void 0;
|
|
26
|
-
const anchor = __importStar(require("@project-serum/anchor"));
|
|
27
|
-
const anchor_1 = require("@project-serum/anchor");
|
|
28
|
-
const spl_token_1 = require("@solana/spl-token");
|
|
29
|
-
const web3_js_1 = require("@solana/web3.js");
|
|
30
|
-
const mock_usdc_faucet_json_1 = __importDefault(require("./idl/mock_usdc_faucet.json"));
|
|
31
|
-
class MockUSDCFaucet {
|
|
32
|
-
constructor(connection, wallet, programId, opts) {
|
|
33
|
-
this.connection = connection;
|
|
34
|
-
this.wallet = wallet;
|
|
35
|
-
this.opts = opts || anchor_1.Provider.defaultOptions();
|
|
36
|
-
const provider = new anchor_1.Provider(connection, wallet, this.opts);
|
|
37
|
-
this.provider = provider;
|
|
38
|
-
this.program = new anchor_1.Program(mock_usdc_faucet_json_1.default, programId, provider);
|
|
39
|
-
}
|
|
40
|
-
async getMockUSDCFaucetStatePublicKeyAndNonce() {
|
|
41
|
-
return anchor.web3.PublicKey.findProgramAddress([Buffer.from(anchor.utils.bytes.utf8.encode('mock_usdc_faucet'))], this.program.programId);
|
|
42
|
-
}
|
|
43
|
-
async getMockUSDCFaucetStatePublicKey() {
|
|
44
|
-
if (this.mockUSDCFaucetStatePublicKey) {
|
|
45
|
-
return this.mockUSDCFaucetStatePublicKey;
|
|
46
|
-
}
|
|
47
|
-
this.mockUSDCFaucetStatePublicKey = (await this.getMockUSDCFaucetStatePublicKeyAndNonce())[0];
|
|
48
|
-
return this.mockUSDCFaucetStatePublicKey;
|
|
49
|
-
}
|
|
50
|
-
async initialize() {
|
|
51
|
-
const stateAccountRPCResponse = await this.connection.getParsedAccountInfo(await this.getMockUSDCFaucetStatePublicKey());
|
|
52
|
-
if (stateAccountRPCResponse.value !== null) {
|
|
53
|
-
throw new Error('Faucet already initialized');
|
|
54
|
-
}
|
|
55
|
-
const fakeUSDCMint = anchor.web3.Keypair.generate();
|
|
56
|
-
const createUSDCMintAccountIx = web3_js_1.SystemProgram.createAccount({
|
|
57
|
-
fromPubkey: this.wallet.publicKey,
|
|
58
|
-
newAccountPubkey: fakeUSDCMint.publicKey,
|
|
59
|
-
lamports: await spl_token_1.Token.getMinBalanceRentForExemptMint(this.connection),
|
|
60
|
-
space: spl_token_1.MintLayout.span,
|
|
61
|
-
programId: spl_token_1.TOKEN_PROGRAM_ID,
|
|
62
|
-
});
|
|
63
|
-
const [mintAuthority, _mintAuthorityNonce] = await web3_js_1.PublicKey.findProgramAddress([fakeUSDCMint.publicKey.toBuffer()], this.program.programId);
|
|
64
|
-
const initUSDCMintIx = spl_token_1.Token.createInitMintInstruction(spl_token_1.TOKEN_PROGRAM_ID, fakeUSDCMint.publicKey, 6, mintAuthority, null);
|
|
65
|
-
const [mockUSDCFaucetStatePublicKey, mockUSDCFaucetStateNonce] = await this.getMockUSDCFaucetStatePublicKeyAndNonce();
|
|
66
|
-
return await this.program.rpc.initialize(mockUSDCFaucetStateNonce, {
|
|
67
|
-
accounts: {
|
|
68
|
-
mockUsdcFaucetState: mockUSDCFaucetStatePublicKey,
|
|
69
|
-
admin: this.wallet.publicKey,
|
|
70
|
-
mintAccount: fakeUSDCMint.publicKey,
|
|
71
|
-
rent: web3_js_1.SYSVAR_RENT_PUBKEY,
|
|
72
|
-
systemProgram: anchor.web3.SystemProgram.programId,
|
|
73
|
-
},
|
|
74
|
-
instructions: [createUSDCMintAccountIx, initUSDCMintIx],
|
|
75
|
-
signers: [fakeUSDCMint],
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
async fetchState() {
|
|
79
|
-
return await this.program.account.mockUsdcFaucetState.fetch(await this.getMockUSDCFaucetStatePublicKey());
|
|
80
|
-
}
|
|
81
|
-
async mintToUser(userTokenAccount, amount) {
|
|
82
|
-
const state = await this.fetchState();
|
|
83
|
-
return await this.program.rpc.mintToUser(amount, {
|
|
84
|
-
accounts: {
|
|
85
|
-
mockUsdcFaucetState: await this.getMockUSDCFaucetStatePublicKey(),
|
|
86
|
-
mintAccount: state.mint,
|
|
87
|
-
userTokenAccount,
|
|
88
|
-
mintAuthority: state.mintAuthority,
|
|
89
|
-
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
|
90
|
-
},
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
async createAssociatedTokenAccountAndMintTo(userPublicKey, amount) {
|
|
94
|
-
const [associatedTokenPublicKey, createAssociatedAccountIx, mintToTx] = await this.createAssociatedTokenAccountAndMintToInstructions(userPublicKey, amount);
|
|
95
|
-
const tx = new web3_js_1.Transaction().add(createAssociatedAccountIx).add(mintToTx);
|
|
96
|
-
const txSig = await this.program.provider.send(tx, [], this.opts);
|
|
97
|
-
return [associatedTokenPublicKey, txSig];
|
|
98
|
-
}
|
|
99
|
-
async createAssociatedTokenAccountAndMintToInstructions(userPublicKey, amount) {
|
|
100
|
-
const state = await this.fetchState();
|
|
101
|
-
const associateTokenPublicKey = await this.getAssosciatedMockUSDMintAddress({ userPubKey: userPublicKey });
|
|
102
|
-
const createAssociatedAccountIx = spl_token_1.Token.createAssociatedTokenAccountInstruction(spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID, spl_token_1.TOKEN_PROGRAM_ID, state.mint, associateTokenPublicKey, userPublicKey, this.wallet.publicKey);
|
|
103
|
-
const mintToIx = await this.program.instruction.mintToUser(amount, {
|
|
104
|
-
accounts: {
|
|
105
|
-
mockUsdcFaucetState: await this.getMockUSDCFaucetStatePublicKey(),
|
|
106
|
-
mintAccount: state.mint,
|
|
107
|
-
userTokenAccount: associateTokenPublicKey,
|
|
108
|
-
mintAuthority: state.mintAuthority,
|
|
109
|
-
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
|
110
|
-
},
|
|
111
|
-
});
|
|
112
|
-
return [associateTokenPublicKey, createAssociatedAccountIx, mintToIx];
|
|
113
|
-
}
|
|
114
|
-
async getAssosciatedMockUSDMintAddress(props) {
|
|
115
|
-
const state = await this.fetchState();
|
|
116
|
-
return spl_token_1.Token.getAssociatedTokenAddress(spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID, spl_token_1.TOKEN_PROGRAM_ID, state.mint, props.userPubKey);
|
|
117
|
-
}
|
|
118
|
-
async getTokenAccountInfo(props) {
|
|
119
|
-
const assosciatedKey = await this.getAssosciatedMockUSDMintAddress(props);
|
|
120
|
-
const state = await this.fetchState();
|
|
121
|
-
const token = new spl_token_1.Token(this.connection, state.mint, spl_token_1.TOKEN_PROGRAM_ID,
|
|
122
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
123
|
-
// @ts-ignore
|
|
124
|
-
this.provider.payer);
|
|
125
|
-
return await token.getAccountInfo(assosciatedKey);
|
|
126
|
-
}
|
|
127
|
-
async subscribeToTokenAccount(props) {
|
|
128
|
-
try {
|
|
129
|
-
const tokenAccountKey = await this.getAssosciatedMockUSDMintAddress(props);
|
|
130
|
-
props.callback(await this.getTokenAccountInfo(props));
|
|
131
|
-
// Couldn't find a way to do it using anchor framework subscription, someone on serum discord recommended this way
|
|
132
|
-
this.connection.onAccountChange(tokenAccountKey, async (_accountInfo /* accountInfo is a buffer which we don't know how to deserialize */) => {
|
|
133
|
-
props.callback(await this.getTokenAccountInfo(props));
|
|
134
|
-
});
|
|
135
|
-
return true;
|
|
136
|
-
}
|
|
137
|
-
catch (e) {
|
|
138
|
-
return false;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
exports.MockUSDCFaucet = MockUSDCFaucet;
|
|
143
|
-
//# sourceMappingURL=mockUSDCFaucet.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mockUSDCFaucet.js","sourceRoot":"","sources":["mockUSDCFaucet.ts"],"names":[],"mappings":"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"}
|