@drift-labs/common 1.0.32 → 1.0.34
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/drift/base/actions/markets/oracleCrank/constants.d.ts +3 -0
- package/lib/drift/base/actions/markets/oracleCrank/constants.js +7 -0
- package/lib/drift/base/actions/markets/oracleCrank/constants.js.map +1 -0
- package/lib/drift/base/actions/markets/oracleCrank/getOracleCrankIxs.d.ts +3 -0
- package/lib/drift/base/actions/markets/oracleCrank/getOracleCrankIxs.js +19 -0
- package/lib/drift/base/actions/markets/oracleCrank/getOracleCrankIxs.js.map +1 -0
- package/lib/drift/base/actions/markets/oracleCrank/index.d.ts +6 -0
- package/lib/drift/base/actions/markets/oracleCrank/index.js +23 -0
- package/lib/drift/base/actions/markets/oracleCrank/index.js.map +1 -0
- package/lib/drift/base/actions/markets/oracleCrank/oracleSourceHelpers.d.ts +6 -0
- package/lib/drift/base/actions/markets/oracleCrank/oracleSourceHelpers.js +26 -0
- package/lib/drift/base/actions/markets/oracleCrank/oracleSourceHelpers.js.map +1 -0
- package/lib/drift/base/actions/markets/oracleCrank/pythLazerCrank.d.ts +4 -0
- package/lib/drift/base/actions/markets/oracleCrank/pythLazerCrank.js +32 -0
- package/lib/drift/base/actions/markets/oracleCrank/pythLazerCrank.js.map +1 -0
- package/lib/drift/base/actions/markets/oracleCrank/pythPullCrank.d.ts +4 -0
- package/lib/drift/base/actions/markets/oracleCrank/pythPullCrank.js +31 -0
- package/lib/drift/base/actions/markets/oracleCrank/pythPullCrank.js.map +1 -0
- package/lib/drift/base/actions/markets/oracleCrank/types.d.ts +15 -0
- package/lib/drift/base/actions/markets/oracleCrank/types.js +3 -0
- package/lib/drift/base/actions/markets/oracleCrank/types.js.map +1 -0
- package/lib/drift/base/actions/spot/index.d.ts +1 -0
- package/lib/drift/base/actions/spot/index.js +1 -0
- package/lib/drift/base/actions/spot/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_PRECEDING_IXS_COUNT = exports.MAX_PYTH_PULL_CRANKS = exports.MAX_PYTH_LAZER_CRANKS = void 0;
|
|
4
|
+
exports.MAX_PYTH_LAZER_CRANKS = 1;
|
|
5
|
+
exports.MAX_PYTH_PULL_CRANKS = 1;
|
|
6
|
+
exports.DEFAULT_PRECEDING_IXS_COUNT = 2;
|
|
7
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../src/drift/base/actions/markets/oracleCrank/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,CAAC,CAAC;AAE1B,QAAA,oBAAoB,GAAG,CAAC,CAAC;AAEzB,QAAA,2BAA2B,GAAG,CAAC,CAAC","sourcesContent":["export const MAX_PYTH_LAZER_CRANKS = 1;\n\nexport const MAX_PYTH_PULL_CRANKS = 1;\n\nexport const DEFAULT_PRECEDING_IXS_COUNT = 2;\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getOracleCrankIxs = void 0;
|
|
4
|
+
const pythPullCrank_1 = require("./pythPullCrank");
|
|
5
|
+
const pythLazerCrank_1 = require("./pythLazerCrank");
|
|
6
|
+
const constants_1 = require("./constants");
|
|
7
|
+
const getOracleCrankIxs = async (options) => {
|
|
8
|
+
const { marketConfigs, driftClient, fetchCrankData, maxPythPullCranks = constants_1.MAX_PYTH_PULL_CRANKS, maxPythLazerCranks = constants_1.MAX_PYTH_LAZER_CRANKS, precedingIxsCount = constants_1.DEFAULT_PRECEDING_IXS_COUNT, } = options;
|
|
9
|
+
if (marketConfigs.length === 0) {
|
|
10
|
+
return [];
|
|
11
|
+
}
|
|
12
|
+
const [pythPullIxs, pythLazerIxs] = await Promise.all([
|
|
13
|
+
(0, pythPullCrank_1.getPythPullUpdateIxs)(marketConfigs, driftClient, fetchCrankData, maxPythPullCranks),
|
|
14
|
+
(0, pythLazerCrank_1.getPythLazerUpdateIxs)(marketConfigs, driftClient, fetchCrankData, maxPythLazerCranks, precedingIxsCount),
|
|
15
|
+
]);
|
|
16
|
+
return [...pythPullIxs, ...pythLazerIxs];
|
|
17
|
+
};
|
|
18
|
+
exports.getOracleCrankIxs = getOracleCrankIxs;
|
|
19
|
+
//# sourceMappingURL=getOracleCrankIxs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOracleCrankIxs.js","sourceRoot":"","sources":["../../../../../../src/drift/base/actions/markets/oracleCrank/getOracleCrankIxs.ts"],"names":[],"mappings":";;;AAEA,mDAAuD;AACvD,qDAAyD;AACzD,2CAIqB;AAEd,MAAM,iBAAiB,GAAG,KAAK,EACrC,OAAiC,EACG,EAAE;IACtC,MAAM,EACL,aAAa,EACb,WAAW,EACX,cAAc,EACd,iBAAiB,GAAG,gCAAoB,EACxC,kBAAkB,GAAG,iCAAqB,EAC1C,iBAAiB,GAAG,uCAA2B,GAC/C,GAAG,OAAO,CAAC;IAEZ,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC;IACX,CAAC;IAED,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACrD,IAAA,oCAAoB,EACnB,aAAa,EACb,WAAW,EACX,cAAc,EACd,iBAAiB,CACjB;QACD,IAAA,sCAAqB,EACpB,aAAa,EACb,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,iBAAiB,CACjB;KACD,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,WAAW,EAAE,GAAG,YAAY,CAAC,CAAC;AAC1C,CAAC,CAAC;AAjCW,QAAA,iBAAiB,qBAiC5B","sourcesContent":["import { TransactionInstruction } from '@solana/web3.js';\nimport { GetOracleCrankIxsOptions } from './types';\nimport { getPythPullUpdateIxs } from './pythPullCrank';\nimport { getPythLazerUpdateIxs } from './pythLazerCrank';\nimport {\n\tMAX_PYTH_PULL_CRANKS,\n\tMAX_PYTH_LAZER_CRANKS,\n\tDEFAULT_PRECEDING_IXS_COUNT,\n} from './constants';\n\nexport const getOracleCrankIxs = async (\n\toptions: GetOracleCrankIxsOptions\n): Promise<TransactionInstruction[]> => {\n\tconst {\n\t\tmarketConfigs,\n\t\tdriftClient,\n\t\tfetchCrankData,\n\t\tmaxPythPullCranks = MAX_PYTH_PULL_CRANKS,\n\t\tmaxPythLazerCranks = MAX_PYTH_LAZER_CRANKS,\n\t\tprecedingIxsCount = DEFAULT_PRECEDING_IXS_COUNT,\n\t} = options;\n\n\tif (marketConfigs.length === 0) {\n\t\treturn [];\n\t}\n\n\tconst [pythPullIxs, pythLazerIxs] = await Promise.all([\n\t\tgetPythPullUpdateIxs(\n\t\t\tmarketConfigs,\n\t\t\tdriftClient,\n\t\t\tfetchCrankData,\n\t\t\tmaxPythPullCranks\n\t\t),\n\t\tgetPythLazerUpdateIxs(\n\t\t\tmarketConfigs,\n\t\t\tdriftClient,\n\t\t\tfetchCrankData,\n\t\t\tmaxPythLazerCranks,\n\t\t\tprecedingIxsCount\n\t\t),\n\t]);\n\n\treturn [...pythPullIxs, ...pythLazerIxs];\n};\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./types"), exports);
|
|
18
|
+
__exportStar(require("./constants"), exports);
|
|
19
|
+
__exportStar(require("./oracleSourceHelpers"), exports);
|
|
20
|
+
__exportStar(require("./pythPullCrank"), exports);
|
|
21
|
+
__exportStar(require("./pythLazerCrank"), exports);
|
|
22
|
+
__exportStar(require("./getOracleCrankIxs"), exports);
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/drift/base/actions/markets/oracleCrank/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,8CAA4B;AAC5B,wDAAsC;AACtC,kDAAgC;AAChC,mDAAiC;AACjC,sDAAoC","sourcesContent":["export * from './types';\nexport * from './constants';\nexport * from './oracleSourceHelpers';\nexport * from './pythPullCrank';\nexport * from './pythLazerCrank';\nexport * from './getOracleCrankIxs';\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { OracleSource } from '@drift-labs/sdk';
|
|
2
|
+
export declare const isPythPull: (oracleSource: OracleSource) => boolean;
|
|
3
|
+
export declare const isPythLazer: (oracleSource: OracleSource) => boolean;
|
|
4
|
+
export declare const isSwitchboard: (oracleSource: OracleSource) => boolean;
|
|
5
|
+
export declare const isPythOracle: (oracleSource: OracleSource) => boolean;
|
|
6
|
+
export declare const isPullOracle: (oracleSource: OracleSource) => boolean;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isPullOracle = exports.isPythOracle = exports.isSwitchboard = exports.isPythLazer = exports.isPythPull = void 0;
|
|
4
|
+
const sdk_1 = require("@drift-labs/sdk");
|
|
5
|
+
const utils_1 = require("../../../../../utils");
|
|
6
|
+
const isPythPull = (oracleSource) => utils_1.ENUM_UTILS.match(sdk_1.OracleSource.PYTH_PULL, oracleSource) ||
|
|
7
|
+
utils_1.ENUM_UTILS.match(sdk_1.OracleSource.PYTH_1K_PULL, oracleSource) ||
|
|
8
|
+
utils_1.ENUM_UTILS.match(sdk_1.OracleSource.PYTH_1M_PULL, oracleSource) ||
|
|
9
|
+
utils_1.ENUM_UTILS.match(sdk_1.OracleSource.PYTH_STABLE_COIN_PULL, oracleSource);
|
|
10
|
+
exports.isPythPull = isPythPull;
|
|
11
|
+
const isPythLazer = (oracleSource) => utils_1.ENUM_UTILS.match(sdk_1.OracleSource.PYTH_LAZER, oracleSource) ||
|
|
12
|
+
utils_1.ENUM_UTILS.match(sdk_1.OracleSource.PYTH_LAZER_1K, oracleSource) ||
|
|
13
|
+
utils_1.ENUM_UTILS.match(sdk_1.OracleSource.PYTH_LAZER_1M, oracleSource) ||
|
|
14
|
+
utils_1.ENUM_UTILS.match(sdk_1.OracleSource.PYTH_LAZER_STABLE_COIN, oracleSource);
|
|
15
|
+
exports.isPythLazer = isPythLazer;
|
|
16
|
+
const isSwitchboard = (oracleSource) => utils_1.ENUM_UTILS.match(sdk_1.OracleSource.SWITCHBOARD_ON_DEMAND, oracleSource);
|
|
17
|
+
exports.isSwitchboard = isSwitchboard;
|
|
18
|
+
const isPythOracle = (oracleSource) => { var _a, _b, _c; return (_c = (_b = (_a = utils_1.ENUM_UTILS.toStr(oracleSource)) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === null || _b === void 0 ? void 0 : _b.includes('pyth')) !== null && _c !== void 0 ? _c : false; };
|
|
19
|
+
exports.isPythOracle = isPythOracle;
|
|
20
|
+
const isPullOracle = (oracleSource) => {
|
|
21
|
+
var _a, _b, _c, _d;
|
|
22
|
+
return ((_b = (_a = utils_1.ENUM_UTILS.toStr(oracleSource)) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === null || _b === void 0 ? void 0 : _b.includes('pull')) ||
|
|
23
|
+
((_d = (_c = utils_1.ENUM_UTILS.toStr(oracleSource)) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === null || _d === void 0 ? void 0 : _d.includes('lazer'));
|
|
24
|
+
};
|
|
25
|
+
exports.isPullOracle = isPullOracle;
|
|
26
|
+
//# sourceMappingURL=oracleSourceHelpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oracleSourceHelpers.js","sourceRoot":"","sources":["../../../../../../src/drift/base/actions/markets/oracleCrank/oracleSourceHelpers.ts"],"names":[],"mappings":";;;AAAA,yCAA+C;AAC/C,gDAAkD;AAE3C,MAAM,UAAU,GAAG,CAAC,YAA0B,EAAW,EAAE,CACjE,kBAAU,CAAC,KAAK,CAAC,kBAAY,CAAC,SAAS,EAAE,YAAY,CAAC;IACtD,kBAAU,CAAC,KAAK,CAAC,kBAAY,CAAC,YAAY,EAAE,YAAY,CAAC;IACzD,kBAAU,CAAC,KAAK,CAAC,kBAAY,CAAC,YAAY,EAAE,YAAY,CAAC;IACzD,kBAAU,CAAC,KAAK,CAAC,kBAAY,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;AAJvD,QAAA,UAAU,cAI6C;AAE7D,MAAM,WAAW,GAAG,CAAC,YAA0B,EAAW,EAAE,CAClE,kBAAU,CAAC,KAAK,CAAC,kBAAY,CAAC,UAAU,EAAE,YAAY,CAAC;IACvD,kBAAU,CAAC,KAAK,CAAC,kBAAY,CAAC,aAAa,EAAE,YAAY,CAAC;IAC1D,kBAAU,CAAC,KAAK,CAAC,kBAAY,CAAC,aAAa,EAAE,YAAY,CAAC;IAC1D,kBAAU,CAAC,KAAK,CAAC,kBAAY,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;AAJxD,QAAA,WAAW,eAI6C;AAE9D,MAAM,aAAa,GAAG,CAAC,YAA0B,EAAW,EAAE,CACpE,kBAAU,CAAC,KAAK,CAAC,kBAAY,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;AADvD,QAAA,aAAa,iBAC0C;AAE7D,MAAM,YAAY,GAAG,CAAC,YAA0B,EAAW,EAAE,mBACnE,OAAA,MAAA,MAAA,MAAA,kBAAU,CAAC,KAAK,CAAC,YAAY,CAAC,0CAAE,WAAW,EAAE,0CAAE,QAAQ,CAAC,MAAM,CAAC,mCAAI,KAAK,CAAA,EAAA,CAAC;AAD7D,QAAA,YAAY,gBACiD;AAEnE,MAAM,YAAY,GAAG,CAAC,YAA0B,EAAW,EAAE;;IACnE,OAAA,CAAA,MAAA,MAAA,kBAAU,CAAC,KAAK,CAAC,YAAY,CAAC,0CAAE,WAAW,EAAE,0CAAE,QAAQ,CAAC,MAAM,CAAC;SAC/D,MAAA,MAAA,kBAAU,CAAC,KAAK,CAAC,YAAY,CAAC,0CAAE,WAAW,EAAE,0CAAE,QAAQ,CAAC,OAAO,CAAC,CAAA,CAAA;CAAA,CAAC;AAFrD,QAAA,YAAY,gBAEyC","sourcesContent":["import { OracleSource } from '@drift-labs/sdk';\nimport { ENUM_UTILS } from '../../../../../utils';\n\nexport const isPythPull = (oracleSource: OracleSource): boolean =>\n\tENUM_UTILS.match(OracleSource.PYTH_PULL, oracleSource) ||\n\tENUM_UTILS.match(OracleSource.PYTH_1K_PULL, oracleSource) ||\n\tENUM_UTILS.match(OracleSource.PYTH_1M_PULL, oracleSource) ||\n\tENUM_UTILS.match(OracleSource.PYTH_STABLE_COIN_PULL, oracleSource);\n\nexport const isPythLazer = (oracleSource: OracleSource): boolean =>\n\tENUM_UTILS.match(OracleSource.PYTH_LAZER, oracleSource) ||\n\tENUM_UTILS.match(OracleSource.PYTH_LAZER_1K, oracleSource) ||\n\tENUM_UTILS.match(OracleSource.PYTH_LAZER_1M, oracleSource) ||\n\tENUM_UTILS.match(OracleSource.PYTH_LAZER_STABLE_COIN, oracleSource);\n\nexport const isSwitchboard = (oracleSource: OracleSource): boolean =>\n\tENUM_UTILS.match(OracleSource.SWITCHBOARD_ON_DEMAND, oracleSource);\n\nexport const isPythOracle = (oracleSource: OracleSource): boolean =>\n\tENUM_UTILS.toStr(oracleSource)?.toLowerCase()?.includes('pyth') ?? false;\n\nexport const isPullOracle = (oracleSource: OracleSource): boolean =>\n\tENUM_UTILS.toStr(oracleSource)?.toLowerCase()?.includes('pull') ||\n\tENUM_UTILS.toStr(oracleSource)?.toLowerCase()?.includes('lazer');\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { DriftClient } from '@drift-labs/sdk';
|
|
2
|
+
import { TransactionInstruction } from '@solana/web3.js';
|
|
3
|
+
import { OracleCrankDataFetcher, OracleMarketConfig } from './types';
|
|
4
|
+
export declare const getPythLazerUpdateIxs: (marketConfigs: OracleMarketConfig[], driftClient: DriftClient, oracleCrankDataFetcher: OracleCrankDataFetcher, maxCount?: number, precedingIxsCount?: number) => Promise<TransactionInstruction[]>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPythLazerUpdateIxs = void 0;
|
|
4
|
+
const oracleSourceHelpers_1 = require("./oracleSourceHelpers");
|
|
5
|
+
const constants_1 = require("./constants");
|
|
6
|
+
const getPythLazerUpdateIxs = async (marketConfigs, driftClient, oracleCrankDataFetcher, maxCount = constants_1.MAX_PYTH_LAZER_CRANKS, precedingIxsCount = constants_1.DEFAULT_PRECEDING_IXS_COUNT) => {
|
|
7
|
+
var _a;
|
|
8
|
+
const feedIds = [
|
|
9
|
+
...new Set(marketConfigs
|
|
10
|
+
.filter((config) => (0, oracleSourceHelpers_1.isPythLazer)(config.oracleSource))
|
|
11
|
+
.map((config) => config.pythLazerId)
|
|
12
|
+
.filter((feedId) => feedId !== undefined)),
|
|
13
|
+
].slice(0, maxCount);
|
|
14
|
+
if (feedIds.length === 0) {
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
const result = await oracleCrankDataFetcher('pythLazer', feedIds);
|
|
18
|
+
if (!result.success || !result.data) {
|
|
19
|
+
console.error('Error getting pyth lazer update data');
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
const crankIxs = await driftClient.getPostPythLazerOracleUpdateIxs(feedIds, (_a = result.data) !== null && _a !== void 0 ? _a : '', undefined, precedingIxsCount + 1);
|
|
24
|
+
return crankIxs;
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
console.error('Error getting pyth lazer crank ix from driftClient:', e);
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
exports.getPythLazerUpdateIxs = getPythLazerUpdateIxs;
|
|
32
|
+
//# sourceMappingURL=pythLazerCrank.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pythLazerCrank.js","sourceRoot":"","sources":["../../../../../../src/drift/base/actions/markets/oracleCrank/pythLazerCrank.ts"],"names":[],"mappings":";;;AAGA,+DAAoD;AACpD,2CAGqB;AAEd,MAAM,qBAAqB,GAAG,KAAK,EACzC,aAAmC,EACnC,WAAwB,EACxB,sBAA8C,EAC9C,WAAmB,iCAAqB,EACxC,oBAA4B,uCAA2B,EACnB,EAAE;;IACtC,MAAM,OAAO,GAAG;QACf,GAAG,IAAI,GAAG,CACT,aAAa;aACX,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,iCAAW,EAAC,MAAM,CAAC,YAAY,CAAC,CAAC;aACpD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;aACnC,MAAM,CAAC,CAAC,MAAM,EAAoB,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAC5D;KACD,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAErB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACX,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAElE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACtD,OAAO,EAAE,CAAC;IACX,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,+BAA+B,CACjE,OAAO,EACP,MAAA,MAAM,CAAC,IAAI,mCAAI,EAAE,EACjB,SAAS,EACT,iBAAiB,GAAG,CAAC,CACrB,CAAC;QACF,OAAO,QAAQ,CAAC;IACjB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,qDAAqD,EAAE,CAAC,CAAC,CAAC;QACxE,OAAO,EAAE,CAAC;IACX,CAAC;AACF,CAAC,CAAC;AAvCW,QAAA,qBAAqB,yBAuChC","sourcesContent":["import { DriftClient } from '@drift-labs/sdk';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { OracleCrankDataFetcher, OracleMarketConfig } from './types';\nimport { isPythLazer } from './oracleSourceHelpers';\nimport {\n\tMAX_PYTH_LAZER_CRANKS,\n\tDEFAULT_PRECEDING_IXS_COUNT,\n} from './constants';\n\nexport const getPythLazerUpdateIxs = async (\n\tmarketConfigs: OracleMarketConfig[],\n\tdriftClient: DriftClient,\n\toracleCrankDataFetcher: OracleCrankDataFetcher,\n\tmaxCount: number = MAX_PYTH_LAZER_CRANKS,\n\tprecedingIxsCount: number = DEFAULT_PRECEDING_IXS_COUNT\n): Promise<TransactionInstruction[]> => {\n\tconst feedIds = [\n\t\t...new Set(\n\t\t\tmarketConfigs\n\t\t\t\t.filter((config) => isPythLazer(config.oracleSource))\n\t\t\t\t.map((config) => config.pythLazerId)\n\t\t\t\t.filter((feedId): feedId is number => feedId !== undefined)\n\t\t),\n\t].slice(0, maxCount);\n\n\tif (feedIds.length === 0) {\n\t\treturn [];\n\t}\n\n\tconst result = await oracleCrankDataFetcher('pythLazer', feedIds);\n\n\tif (!result.success || !result.data) {\n\t\tconsole.error('Error getting pyth lazer update data');\n\t\treturn [];\n\t}\n\n\ttry {\n\t\tconst crankIxs = await driftClient.getPostPythLazerOracleUpdateIxs(\n\t\t\tfeedIds,\n\t\t\tresult.data ?? '',\n\t\t\tundefined,\n\t\t\tprecedingIxsCount + 1\n\t\t);\n\t\treturn crankIxs;\n\t} catch (e) {\n\t\tconsole.error('Error getting pyth lazer crank ix from driftClient:', e);\n\t\treturn [];\n\t}\n};\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { DriftClient } from '@drift-labs/sdk';
|
|
2
|
+
import { TransactionInstruction } from '@solana/web3.js';
|
|
3
|
+
import { OracleCrankDataFetcher, OracleMarketConfig } from './types';
|
|
4
|
+
export declare const getPythPullUpdateIxs: (marketConfigs: OracleMarketConfig[], driftClient: DriftClient, oracleCrankDataFetcher: OracleCrankDataFetcher, maxCount?: number) => Promise<TransactionInstruction[]>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPythPullUpdateIxs = void 0;
|
|
4
|
+
const oracleSourceHelpers_1 = require("./oracleSourceHelpers");
|
|
5
|
+
const constants_1 = require("./constants");
|
|
6
|
+
const getPythPullUpdateIxs = async (marketConfigs, driftClient, oracleCrankDataFetcher, maxCount = constants_1.MAX_PYTH_PULL_CRANKS) => {
|
|
7
|
+
const feedIds = [
|
|
8
|
+
...new Set(marketConfigs
|
|
9
|
+
.filter((config) => (0, oracleSourceHelpers_1.isPythPull)(config.oracleSource))
|
|
10
|
+
.map((config) => config.pythFeedId)
|
|
11
|
+
.filter((feedId) => feedId !== undefined)),
|
|
12
|
+
].slice(0, maxCount);
|
|
13
|
+
if (feedIds.length === 0) {
|
|
14
|
+
return [];
|
|
15
|
+
}
|
|
16
|
+
const result = await oracleCrankDataFetcher('pythPull', feedIds);
|
|
17
|
+
if (!result.success || !result.data) {
|
|
18
|
+
console.error('Error getting pyth pull update data');
|
|
19
|
+
return [];
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
const crankIxs = await driftClient.getPostPythPullOracleUpdateAtomicIxs(result.data, feedIds);
|
|
23
|
+
return crankIxs;
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
console.error('Error getting pyth pull crank ix from driftClient:', e);
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
exports.getPythPullUpdateIxs = getPythPullUpdateIxs;
|
|
31
|
+
//# sourceMappingURL=pythPullCrank.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pythPullCrank.js","sourceRoot":"","sources":["../../../../../../src/drift/base/actions/markets/oracleCrank/pythPullCrank.ts"],"names":[],"mappings":";;;AAGA,+DAAmD;AACnD,2CAAmD;AAE5C,MAAM,oBAAoB,GAAG,KAAK,EACxC,aAAmC,EACnC,WAAwB,EACxB,sBAA8C,EAC9C,WAAmB,gCAAoB,EACH,EAAE;IACtC,MAAM,OAAO,GAAG;QACf,GAAG,IAAI,GAAG,CACT,aAAa;aACX,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,gCAAU,EAAC,MAAM,CAAC,YAAY,CAAC,CAAC;aACnD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;aAClC,MAAM,CAAC,CAAC,MAAM,EAAoB,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAC5D;KACD,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAErB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACX,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAEjE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACrD,OAAO,EAAE,CAAC;IACX,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,oCAAoC,CACtE,MAAM,CAAC,IAAI,EACX,OAAO,CACP,CAAC;QACF,OAAO,QAAQ,CAAC;IACjB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,oDAAoD,EAAE,CAAC,CAAC,CAAC;QACvE,OAAO,EAAE,CAAC;IACX,CAAC;AACF,CAAC,CAAC;AApCW,QAAA,oBAAoB,wBAoC/B","sourcesContent":["import { DriftClient } from '@drift-labs/sdk';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { OracleCrankDataFetcher, OracleMarketConfig } from './types';\nimport { isPythPull } from './oracleSourceHelpers';\nimport { MAX_PYTH_PULL_CRANKS } from './constants';\n\nexport const getPythPullUpdateIxs = async (\n\tmarketConfigs: OracleMarketConfig[],\n\tdriftClient: DriftClient,\n\toracleCrankDataFetcher: OracleCrankDataFetcher,\n\tmaxCount: number = MAX_PYTH_PULL_CRANKS\n): Promise<TransactionInstruction[]> => {\n\tconst feedIds = [\n\t\t...new Set(\n\t\t\tmarketConfigs\n\t\t\t\t.filter((config) => isPythPull(config.oracleSource))\n\t\t\t\t.map((config) => config.pythFeedId)\n\t\t\t\t.filter((feedId): feedId is string => feedId !== undefined)\n\t\t),\n\t].slice(0, maxCount);\n\n\tif (feedIds.length === 0) {\n\t\treturn [];\n\t}\n\n\tconst result = await oracleCrankDataFetcher('pythPull', feedIds);\n\n\tif (!result.success || !result.data) {\n\t\tconsole.error('Error getting pyth pull update data');\n\t\treturn [];\n\t}\n\n\ttry {\n\t\tconst crankIxs = await driftClient.getPostPythPullOracleUpdateAtomicIxs(\n\t\t\tresult.data,\n\t\t\tfeedIds\n\t\t);\n\t\treturn crankIxs;\n\t} catch (e) {\n\t\tconsole.error('Error getting pyth pull crank ix from driftClient:', e);\n\t\treturn [];\n\t}\n};\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DriftClient, PerpMarketConfig, SpotMarketConfig } from '@drift-labs/sdk';
|
|
2
|
+
export type OracleCrankFetchResult = {
|
|
3
|
+
success: boolean;
|
|
4
|
+
data?: string;
|
|
5
|
+
};
|
|
6
|
+
export type OracleCrankDataFetcher = (source: 'pythPull' | 'pythLazer', feedIds: (number | string)[]) => Promise<OracleCrankFetchResult>;
|
|
7
|
+
export type OracleMarketConfig = PerpMarketConfig | SpotMarketConfig;
|
|
8
|
+
export type GetOracleCrankIxsOptions = {
|
|
9
|
+
marketConfigs: OracleMarketConfig[];
|
|
10
|
+
driftClient: DriftClient;
|
|
11
|
+
fetchCrankData: OracleCrankDataFetcher;
|
|
12
|
+
maxPythPullCranks?: number;
|
|
13
|
+
maxPythLazerCranks?: number;
|
|
14
|
+
precedingIxsCount?: number;
|
|
15
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../src/drift/base/actions/markets/oracleCrank/types.ts"],"names":[],"mappings":"","sourcesContent":["import {\n\tDriftClient,\n\tPerpMarketConfig,\n\tSpotMarketConfig,\n} from '@drift-labs/sdk';\n\nexport type OracleCrankFetchResult = {\n\tsuccess: boolean;\n\tdata?: string;\n};\n\nexport type OracleCrankDataFetcher = (\n\tsource: 'pythPull' | 'pythLazer',\n\tfeedIds: (number | string)[]\n) => Promise<OracleCrankFetchResult>;\n\nexport type OracleMarketConfig = PerpMarketConfig | SpotMarketConfig;\n\nexport type GetOracleCrankIxsOptions = {\n\tmarketConfigs: OracleMarketConfig[];\n\tdriftClient: DriftClient;\n\tfetchCrankData: OracleCrankDataFetcher;\n\tmaxPythPullCranks?: number;\n\tmaxPythLazerCranks?: number;\n\tprecedingIxsCount?: number;\n};\n"]}
|
|
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./deposit"), exports);
|
|
18
18
|
__exportStar(require("./withdraw"), exports);
|
|
19
|
+
__exportStar(require("../markets/oracleCrank"), exports);
|
|
19
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/drift/base/actions/spot/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,6CAA2B","sourcesContent":["export * from './deposit';\nexport * from './withdraw';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/drift/base/actions/spot/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,6CAA2B;AAC3B,yDAAuC","sourcesContent":["export * from './deposit';\nexport * from './withdraw';\nexport * from '../markets/oracleCrank';\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@drift-labs/common",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.34",
|
|
4
4
|
"description": "Common functions for Drift",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"types": "./lib/index.d.ts",
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"chai": "4.3.10",
|
|
81
81
|
"crypto-browserify": "^3.12.1",
|
|
82
82
|
"encoding": "0.1.13",
|
|
83
|
-
"esbuild": "
|
|
83
|
+
"esbuild": "0.27.3",
|
|
84
84
|
"jest": "29.7.0",
|
|
85
85
|
"madge": "^8.0.0",
|
|
86
86
|
"mocha": "10.2.0",
|