@drift-labs/common 1.0.33 → 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.
Files changed (25) hide show
  1. package/lib/drift/base/actions/markets/oracleCrank/constants.d.ts +3 -0
  2. package/lib/drift/base/actions/markets/oracleCrank/constants.js +7 -0
  3. package/lib/drift/base/actions/markets/oracleCrank/constants.js.map +1 -0
  4. package/lib/drift/base/actions/markets/oracleCrank/getOracleCrankIxs.d.ts +3 -0
  5. package/lib/drift/base/actions/markets/oracleCrank/getOracleCrankIxs.js +19 -0
  6. package/lib/drift/base/actions/markets/oracleCrank/getOracleCrankIxs.js.map +1 -0
  7. package/lib/drift/base/actions/markets/oracleCrank/index.d.ts +6 -0
  8. package/lib/drift/base/actions/markets/oracleCrank/index.js +23 -0
  9. package/lib/drift/base/actions/markets/oracleCrank/index.js.map +1 -0
  10. package/lib/drift/base/actions/markets/oracleCrank/oracleSourceHelpers.d.ts +6 -0
  11. package/lib/drift/base/actions/markets/oracleCrank/oracleSourceHelpers.js +26 -0
  12. package/lib/drift/base/actions/markets/oracleCrank/oracleSourceHelpers.js.map +1 -0
  13. package/lib/drift/base/actions/markets/oracleCrank/pythLazerCrank.d.ts +4 -0
  14. package/lib/drift/base/actions/markets/oracleCrank/pythLazerCrank.js +32 -0
  15. package/lib/drift/base/actions/markets/oracleCrank/pythLazerCrank.js.map +1 -0
  16. package/lib/drift/base/actions/markets/oracleCrank/pythPullCrank.d.ts +4 -0
  17. package/lib/drift/base/actions/markets/oracleCrank/pythPullCrank.js +31 -0
  18. package/lib/drift/base/actions/markets/oracleCrank/pythPullCrank.js.map +1 -0
  19. package/lib/drift/base/actions/markets/oracleCrank/types.d.ts +15 -0
  20. package/lib/drift/base/actions/markets/oracleCrank/types.js +3 -0
  21. package/lib/drift/base/actions/markets/oracleCrank/types.js.map +1 -0
  22. package/lib/drift/base/actions/spot/index.d.ts +1 -0
  23. package/lib/drift/base/actions/spot/index.js +1 -0
  24. package/lib/drift/base/actions/spot/index.js.map +1 -1
  25. package/package.json +1 -1
@@ -0,0 +1,3 @@
1
+ export declare const MAX_PYTH_LAZER_CRANKS = 1;
2
+ export declare const MAX_PYTH_PULL_CRANKS = 1;
3
+ export declare const DEFAULT_PRECEDING_IXS_COUNT = 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,3 @@
1
+ import { TransactionInstruction } from '@solana/web3.js';
2
+ import { GetOracleCrankIxsOptions } from './types';
3
+ export declare const getOracleCrankIxs: (options: GetOracleCrankIxsOptions) => Promise<TransactionInstruction[]>;
@@ -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,6 @@
1
+ export * from './types';
2
+ export * from './constants';
3
+ export * from './oracleSourceHelpers';
4
+ export * from './pythPullCrank';
5
+ export * from './pythLazerCrank';
6
+ export * from './getOracleCrankIxs';
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -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"]}
@@ -1,2 +1,3 @@
1
1
  export * from './deposit';
2
2
  export * from './withdraw';
3
+ export * from '../markets/oracleCrank';
@@ -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.33",
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",