@drift-labs/sdk 2.125.0-beta.0 → 2.125.0-beta.1
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/VERSION +1 -1
- package/lib/browser/math/oracles.js +2 -1
- package/lib/node/math/oracles.d.ts.map +1 -1
- package/lib/node/math/oracles.js +2 -1
- package/package.json +1 -1
- package/src/adminClient.ts +40 -0
- package/src/math/oracles.ts +11 -1
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.125.0-beta.
|
|
1
|
+
2.125.0-beta.1
|
|
@@ -99,7 +99,8 @@ function calculateLiveOracleStd(amm, oraclePriceData, now) {
|
|
|
99
99
|
const sinceLastUpdate = index_1.BN.max(numericConstants_1.ONE, now.sub(amm.historicalOracleData.lastOraclePriceTwapTs));
|
|
100
100
|
const sinceStart = index_1.BN.max(numericConstants_1.ZERO, amm.fundingPeriod.sub(sinceLastUpdate));
|
|
101
101
|
const liveOracleTwap = calculateLiveOracleTwap(amm.historicalOracleData, oraclePriceData, now, amm.fundingPeriod);
|
|
102
|
-
const
|
|
102
|
+
const liveOracleTwap5MIN = calculateLiveOracleTwap(amm.historicalOracleData, oraclePriceData, now, numericConstants_1.FIVE_MINUTE);
|
|
103
|
+
const priceDeltaVsTwap = index_1.BN.max(oraclePriceData.price.sub(liveOracleTwap).abs(), oraclePriceData.price.sub(liveOracleTwap5MIN).abs());
|
|
103
104
|
const oracleStd = priceDeltaVsTwap.add(amm.oracleStd.mul(sinceStart).div(sinceStart.add(sinceLastUpdate)));
|
|
104
105
|
return oracleStd;
|
|
105
106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oracles.d.ts","sourceRoot":"","sources":["../../../src/math/oracles.ts"],"names":[],"mappings":";;;AAAA,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAa,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAUnD,OAAO,EACN,EAAE,EACF,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EACjB,MAAM,UAAU,CAAC;AAGlB,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAC7C,CAAC,EAAE,EAAE,EAAE,CAAC,CAUV;AAED,wBAAgB,kCAAkC,CACjD,MAAM,EAAE,iBAAiB,GACvB,EAAE,CAcJ;AAED,wBAAgB,aAAa,CAC5B,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,MAAM,GACV,OAAO,CAmCT;AAED,wBAAgB,oBAAoB,CACnC,GAAG,EAAE,GAAG,EACR,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,EAAE,EAAE,GACL,OAAO,CAsBT;AAED,wBAAgB,uBAAuB,CACtC,cAAc,EAAE,oBAAoB,EACpC,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,EAAE,EACP,MAAM,EAAE,EAAE,GACR,EAAE,CA6BJ;AAED,wBAAgB,sBAAsB,CACrC,GAAG,EAAE,GAAG,EACR,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,EAAE,GACL,EAAE,
|
|
1
|
+
{"version":3,"file":"oracles.d.ts","sourceRoot":"","sources":["../../../src/math/oracles.ts"],"names":[],"mappings":";;;AAAA,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAa,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAUnD,OAAO,EACN,EAAE,EACF,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EACjB,MAAM,UAAU,CAAC;AAGlB,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,GAC7C,CAAC,EAAE,EAAE,EAAE,CAAC,CAUV;AAED,wBAAgB,kCAAkC,CACjD,MAAM,EAAE,iBAAiB,GACvB,EAAE,CAcJ;AAED,wBAAgB,aAAa,CAC5B,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,IAAI,EAAE,MAAM,GACV,OAAO,CAmCT;AAED,wBAAgB,oBAAoB,CACnC,GAAG,EAAE,GAAG,EACR,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,GAAG,EAAE,EAAE,GACL,OAAO,CAsBT;AAED,wBAAgB,uBAAuB,CACtC,cAAc,EAAE,oBAAoB,EACpC,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,EAAE,EACP,MAAM,EAAE,EAAE,GACR,EAAE,CA6BJ;AAED,wBAAgB,sBAAsB,CACrC,GAAG,EAAE,GAAG,EACR,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,EAAE,GACL,EAAE,CA+BJ;AAED,wBAAgB,mBAAmB,CAClC,GAAG,EAAE,GAAG,EACR,eAAe,EAAE,eAAe,EAChC,YAAY,EAAE,EAAE,EAChB,GAAG,EAAE,EAAE,GACL,EAAE,CAwBJ;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,SAAI,GAAG,MAAM,CAe5D;AAED,wBAAgB,+BAA+B,CAC9C,iBAAiB,EAAE,YAAY,EAC/B,kBAAkB,EAAE,YAAY,GAC9B;IAAE,SAAS,EAAE,EAAE,CAAC;IAAC,WAAW,EAAE,EAAE,CAAA;CAAE,CA0DpC"}
|
package/lib/node/math/oracles.js
CHANGED
|
@@ -99,7 +99,8 @@ function calculateLiveOracleStd(amm, oraclePriceData, now) {
|
|
|
99
99
|
const sinceLastUpdate = index_1.BN.max(numericConstants_1.ONE, now.sub(amm.historicalOracleData.lastOraclePriceTwapTs));
|
|
100
100
|
const sinceStart = index_1.BN.max(numericConstants_1.ZERO, amm.fundingPeriod.sub(sinceLastUpdate));
|
|
101
101
|
const liveOracleTwap = calculateLiveOracleTwap(amm.historicalOracleData, oraclePriceData, now, amm.fundingPeriod);
|
|
102
|
-
const
|
|
102
|
+
const liveOracleTwap5MIN = calculateLiveOracleTwap(amm.historicalOracleData, oraclePriceData, now, numericConstants_1.FIVE_MINUTE);
|
|
103
|
+
const priceDeltaVsTwap = index_1.BN.max(oraclePriceData.price.sub(liveOracleTwap).abs(), oraclePriceData.price.sub(liveOracleTwap5MIN).abs());
|
|
103
104
|
const oracleStd = priceDeltaVsTwap.add(amm.oracleStd.mul(sinceStart).div(sinceStart.add(sinceLastUpdate)));
|
|
104
105
|
return oracleStd;
|
|
105
106
|
}
|
package/package.json
CHANGED
package/src/adminClient.ts
CHANGED
|
@@ -3960,6 +3960,46 @@ export class AdminClient extends DriftClient {
|
|
|
3960
3960
|
);
|
|
3961
3961
|
}
|
|
3962
3962
|
|
|
3963
|
+
public async updatePerpMarketOracleSlotDelayOverride(
|
|
3964
|
+
perpMarketIndex: number,
|
|
3965
|
+
oracleSlotDelay: number
|
|
3966
|
+
): Promise<TransactionSignature> {
|
|
3967
|
+
const updatePerpMarketOracleSlotDelayOverrideIx =
|
|
3968
|
+
await this.getUpdatePerpMarketOracleSlotDelayOverrideIx(
|
|
3969
|
+
perpMarketIndex,
|
|
3970
|
+
oracleSlotDelay
|
|
3971
|
+
);
|
|
3972
|
+
const tx = await this.buildTransaction(
|
|
3973
|
+
updatePerpMarketOracleSlotDelayOverrideIx
|
|
3974
|
+
);
|
|
3975
|
+
const { txSig } = await this.sendTransaction(tx, [], this.opts);
|
|
3976
|
+
|
|
3977
|
+
return txSig;
|
|
3978
|
+
}
|
|
3979
|
+
|
|
3980
|
+
public async getUpdatePerpMarketOracleSlotDelayOverrideIx(
|
|
3981
|
+
perpMarketIndex: number,
|
|
3982
|
+
oracleSlotDelay: number
|
|
3983
|
+
): Promise<TransactionInstruction> {
|
|
3984
|
+
const perpMarketPublicKey = await getPerpMarketPublicKey(
|
|
3985
|
+
this.program.programId,
|
|
3986
|
+
perpMarketIndex
|
|
3987
|
+
);
|
|
3988
|
+
|
|
3989
|
+
return await this.program.instruction.updatePerpMarketOracleSlotDelayOverride(
|
|
3990
|
+
oracleSlotDelay,
|
|
3991
|
+
{
|
|
3992
|
+
accounts: {
|
|
3993
|
+
admin: this.useHotWalletAdmin
|
|
3994
|
+
? this.wallet.publicKey
|
|
3995
|
+
: this.getStateAccount().admin,
|
|
3996
|
+
state: await this.getStatePublicKey(),
|
|
3997
|
+
perpMarket: perpMarketPublicKey,
|
|
3998
|
+
},
|
|
3999
|
+
}
|
|
4000
|
+
);
|
|
4001
|
+
}
|
|
4002
|
+
|
|
3963
4003
|
public async updatePerpMarketAmmSpreadAdjustment(
|
|
3964
4004
|
perpMarketIndex: number,
|
|
3965
4005
|
ammSpreadAdjustment: number
|
package/src/math/oracles.ts
CHANGED
|
@@ -175,7 +175,17 @@ export function calculateLiveOracleStd(
|
|
|
175
175
|
amm.fundingPeriod
|
|
176
176
|
);
|
|
177
177
|
|
|
178
|
-
const
|
|
178
|
+
const liveOracleTwap5MIN = calculateLiveOracleTwap(
|
|
179
|
+
amm.historicalOracleData,
|
|
180
|
+
oraclePriceData,
|
|
181
|
+
now,
|
|
182
|
+
FIVE_MINUTE
|
|
183
|
+
);
|
|
184
|
+
|
|
185
|
+
const priceDeltaVsTwap = BN.max(
|
|
186
|
+
oraclePriceData.price.sub(liveOracleTwap).abs(),
|
|
187
|
+
oraclePriceData.price.sub(liveOracleTwap5MIN).abs()
|
|
188
|
+
);
|
|
179
189
|
|
|
180
190
|
const oracleStd = priceDeltaVsTwap.add(
|
|
181
191
|
amm.oracleStd.mul(sinceStart).div(sinceStart.add(sinceLastUpdate))
|