@symmetry-hq/temp-v3-sdk 0.0.34 → 0.0.35

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.
@@ -89,12 +89,12 @@ export declare class SymmetryCore {
89
89
  jup_swap_ix?: TransactionInstruction;
90
90
  }): Promise<TxPayloadBatchSequence>;
91
91
  executeBasketIntentTx(params: {
92
+ keeper: string;
92
93
  intent: string;
93
- executor: string;
94
94
  }): Promise<TxPayloadBatchSequence>;
95
95
  cancelBasketIntentTx(params: {
96
+ keeper: string;
96
97
  intent: string;
97
- manager: string;
98
98
  }): Promise<TxPayloadBatchSequence>;
99
99
  cancelRebalanceIntentTx(params: {
100
100
  keeper: string;
package/dist/src/index.js CHANGED
@@ -478,7 +478,7 @@ class SymmetryCore {
478
478
  }
479
479
  executeBasketIntentTx(params) {
480
480
  return __awaiter(this, void 0, void 0, function* () {
481
- let keeper = new web3_js_1.PublicKey(params.executor);
481
+ let keeper = new web3_js_1.PublicKey(params.keeper);
482
482
  let intent = yield this.fetchIntent(params.intent);
483
483
  let basketMint;
484
484
  if (intent.taskType === intent_1.TaskType.EditMetadataSettings) {
@@ -510,10 +510,10 @@ class SymmetryCore {
510
510
  }
511
511
  cancelBasketIntentTx(params) {
512
512
  return __awaiter(this, void 0, void 0, function* () {
513
- let manager = new web3_js_1.PublicKey(params.manager);
513
+ let keeper = new web3_js_1.PublicKey(params.keeper);
514
514
  let intent = yield this.fetchIntent(params.intent);
515
515
  let ix = (0, edit_1.cancelIntentIx)({
516
- keeper: manager,
516
+ keeper: keeper,
517
517
  basket: intent.basket,
518
518
  intent: intent.ownAddress,
519
519
  editType: intent.taskType,
@@ -521,7 +521,7 @@ class SymmetryCore {
521
521
  bountyMint: intent.bounty.bountyMint,
522
522
  });
523
523
  let txBatchData = { batches: [[{
524
- payer: manager,
524
+ payer: keeper,
525
525
  instructions: [
526
526
  ix,
527
527
  web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: exports.COMPUTE_UNITS }),
@@ -808,9 +808,9 @@ class PythOracle {
808
808
  catch (error) {
809
809
  return new oracle_1.OraclePrice(new decimal_js_1.default(0), new decimal_js_1.default(0), 0);
810
810
  }
811
- let pr = new decimal_js_1.default(state.priceMessage.price.toString()).mul(decimal_js_1.default.pow(10, state.priceMessage.exponent));
812
- let ema = new decimal_js_1.default(state.priceMessage.emaPrice.toString()).mul(decimal_js_1.default.pow(10, state.priceMessage.exponent));
813
- let cf = new decimal_js_1.default(state.priceMessage.conf.toString()).mul(decimal_js_1.default.pow(10, state.priceMessage.exponent));
811
+ let pr = new decimal_js_1.default(state.priceMessage.price.toString()).mul(decimal_js_1.default.pow(10, state.priceMessage.exponent - oracleParams.tokenDecimals));
812
+ let ema = new decimal_js_1.default(state.priceMessage.emaPrice.toString()).mul(decimal_js_1.default.pow(10, state.priceMessage.exponent - oracleParams.tokenDecimals));
813
+ let cf = new decimal_js_1.default(state.priceMessage.conf.toString()).mul(decimal_js_1.default.pow(10, state.priceMessage.exponent - oracleParams.tokenDecimals));
814
814
  const lastUpdateTimestamp = state.priceMessage.publishTime;
815
815
  // Validate primary price is not zero
816
816
  if (pr.lte(0)) {
package/dist/test.js CHANGED
@@ -463,3 +463,119 @@ function testStates() {
463
463
  });
464
464
  }
465
465
  testStates();
466
+ function runKeeper() {
467
+ return __awaiter(this, void 0, void 0, function* () {
468
+ return;
469
+ let wallet = new anchor_1.Wallet(web3_js_1.Keypair.fromSecretKey(new Uint8Array(kp)));
470
+ console.log(wallet.publicKey.toBase58());
471
+ let sdk = new src_1.SymmetryCore({
472
+ connection: connection,
473
+ network: "devnet",
474
+ });
475
+ const delay = (ms) => __awaiter(this, void 0, void 0, function* () { return new Promise(resolve => setTimeout(resolve, ms)); });
476
+ while (true) {
477
+ let intents = yield sdk.fetchAllIntents();
478
+ let now = Date.now() / 1000;
479
+ for (let intent of intents) {
480
+ if (intent.formatted.activation_timestamp < now) {
481
+ try {
482
+ let tx = yield sdk.executeBasketIntentTx({
483
+ keeper: wallet.publicKey.toBase58(),
484
+ intent: intent.ownAddress.toBase58(),
485
+ });
486
+ let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
487
+ console.log(res);
488
+ }
489
+ catch (error) {
490
+ let tx = yield sdk.cancelBasketIntentTx({
491
+ keeper: wallet.publicKey.toBase58(),
492
+ intent: intent.ownAddress.toBase58(),
493
+ });
494
+ let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
495
+ console.log(res);
496
+ }
497
+ continue;
498
+ }
499
+ }
500
+ let rebalanceIntents = yield sdk.fetchAllRebalanceIntents();
501
+ for (let intent of rebalanceIntents) {
502
+ if (intent.formatted.current_action == "not_active") {
503
+ continue;
504
+ }
505
+ if (intent.formatted.current_action == "deposit_tokens") {
506
+ continue;
507
+ }
508
+ if (intent.formatted.current_action == "start_price_updates") {
509
+ try {
510
+ let tx = yield sdk.startPriceUpdatesTx({
511
+ keeper: wallet.publicKey.toBase58(),
512
+ basket: intent.basket.toBase58(),
513
+ rebalance_intent: intent.ownAddress.toBase58(),
514
+ });
515
+ let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
516
+ console.log(res);
517
+ }
518
+ catch (_a) { }
519
+ continue;
520
+ }
521
+ if (intent.formatted.current_action == "update_prices" && intent.formatted.execution_start_time < now) {
522
+ try {
523
+ let tx = yield sdk.updateTokenPricesTx({
524
+ keeper: wallet.publicKey.toBase58(),
525
+ basket: intent.basket.toBase58(),
526
+ rebalance_intent: intent.ownAddress.toBase58(),
527
+ });
528
+ let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
529
+ console.log(res);
530
+ }
531
+ catch (_b) { }
532
+ continue;
533
+ }
534
+ if (intent.formatted.current_action == "update_prices") {
535
+ continue;
536
+ }
537
+ if (intent.formatted.auctions[2].end_time >= now) {
538
+ // SWAP
539
+ continue;
540
+ }
541
+ if (intent.formatted.rebalance_type == "deposit") {
542
+ try {
543
+ let tx = yield sdk.mintTx({
544
+ keeper: wallet.publicKey.toBase58(),
545
+ rebalance_intent: intent.ownAddress.toBase58(),
546
+ });
547
+ let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
548
+ console.log(res);
549
+ }
550
+ catch (_c) { }
551
+ continue;
552
+ }
553
+ let hasTokens = intent.formatted.tokens.find(token => token.amount > 0);
554
+ if (hasTokens && intent.formatted.rebalance_type == "withdraw") {
555
+ try {
556
+ let tx = yield sdk.redeemTokensTx({
557
+ keeper: wallet.publicKey.toBase58(),
558
+ rebalance_intent: intent.ownAddress.toBase58(),
559
+ });
560
+ let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
561
+ console.log(res);
562
+ }
563
+ catch (_d) { }
564
+ continue;
565
+ }
566
+ try {
567
+ let tx = yield sdk.claimBountyTx({
568
+ keeper: wallet.publicKey.toBase58(),
569
+ rebalance_intent: intent.ownAddress.toBase58(),
570
+ });
571
+ let res = yield sdk.signAndSendTxPayloadBatchSequence({ txPayloadBatchSequence: tx, wallet });
572
+ console.log(res);
573
+ }
574
+ catch (_e) { }
575
+ continue;
576
+ }
577
+ yield delay(30 * 1000);
578
+ }
579
+ });
580
+ }
581
+ runKeeper();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symmetry-hq/temp-v3-sdk",
3
- "version": "0.0.34",
3
+ "version": "0.0.35",
4
4
  "description": "Symmetry Baskets V3 SDK",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
package/src/index.ts CHANGED
@@ -517,10 +517,10 @@ export class SymmetryCore {
517
517
  }
518
518
 
519
519
  async executeBasketIntentTx(params: {
520
+ keeper: string,
520
521
  intent: string,
521
- executor: string,
522
522
  }): Promise<TxPayloadBatchSequence> {
523
- let keeper = new PublicKey(params.executor);
523
+ let keeper = new PublicKey(params.keeper);
524
524
  let intent = await this.fetchIntent(params.intent);
525
525
  let basketMint: PublicKey | undefined;
526
526
  if (intent.taskType === TaskType.EditMetadataSettings) {
@@ -552,13 +552,13 @@ export class SymmetryCore {
552
552
  }
553
553
 
554
554
  async cancelBasketIntentTx(params: {
555
+ keeper: string,
555
556
  intent: string,
556
- manager: string,
557
557
  }): Promise<TxPayloadBatchSequence> {
558
- let manager = new PublicKey(params.manager);
558
+ let keeper = new PublicKey(params.keeper);
559
559
  let intent = await this.fetchIntent(params.intent);
560
560
  let ix = cancelIntentIx({
561
- keeper: manager,
561
+ keeper: keeper,
562
562
  basket: intent.basket,
563
563
  intent: intent.ownAddress!,
564
564
  editType: intent.taskType,
@@ -567,7 +567,7 @@ export class SymmetryCore {
567
567
  });
568
568
 
569
569
  let txBatchData: TxBatchData = {batches: [[{
570
- payer: manager,
570
+ payer: keeper,
571
571
  instructions: [
572
572
  ix,
573
573
  ComputeBudgetProgram.setComputeUnitLimit({units: COMPUTE_UNITS}),
@@ -1082,9 +1082,9 @@ export class PythOracle {
1082
1082
  return new OraclePrice(new Decimal(0), new Decimal(0), 0);
1083
1083
  }
1084
1084
 
1085
- let pr = new Decimal(state.priceMessage.price.toString()).mul(Decimal.pow(10, state.priceMessage.exponent));
1086
- let ema = new Decimal(state.priceMessage.emaPrice.toString()).mul(Decimal.pow(10, state.priceMessage.exponent));
1087
- let cf = new Decimal(state.priceMessage.conf.toString()).mul(Decimal.pow(10, state.priceMessage.exponent));
1085
+ let pr = new Decimal(state.priceMessage.price.toString()).mul(Decimal.pow(10, state.priceMessage.exponent - oracleParams.tokenDecimals));
1086
+ let ema = new Decimal(state.priceMessage.emaPrice.toString()).mul(Decimal.pow(10, state.priceMessage.exponent - oracleParams.tokenDecimals));
1087
+ let cf = new Decimal(state.priceMessage.conf.toString()).mul(Decimal.pow(10, state.priceMessage.exponent - oracleParams.tokenDecimals));
1088
1088
  const lastUpdateTimestamp = state.priceMessage.publishTime;
1089
1089
 
1090
1090
  // Validate primary price is not zero
package/test.ts CHANGED
@@ -509,3 +509,110 @@ async function testStates() {
509
509
  }
510
510
 
511
511
  testStates();
512
+
513
+
514
+ async function runKeeper() {
515
+ return;
516
+ let wallet = new Wallet(Keypair.fromSecretKey(new Uint8Array(kp)));
517
+ console.log(wallet.publicKey.toBase58());
518
+
519
+ let sdk = new SymmetryCore({
520
+ connection: connection,
521
+ network: "devnet",
522
+ });
523
+
524
+ const delay = async (ms: number) => new Promise(resolve => setTimeout(resolve, ms));
525
+ while (true) {
526
+ let intents = await sdk.fetchAllIntents();
527
+ let now = Date.now() / 1000;
528
+ for (let intent of intents) {
529
+ if (intent.formatted!.activation_timestamp < now) {
530
+ try {
531
+ let tx = await sdk.executeBasketIntentTx({
532
+ keeper: wallet.publicKey.toBase58(),
533
+ intent: intent.ownAddress!.toBase58(),
534
+ });
535
+ let res = await sdk.signAndSendTxPayloadBatchSequence({txPayloadBatchSequence: tx, wallet});
536
+ console.log(res);
537
+ } catch (error) {
538
+ let tx = await sdk.cancelBasketIntentTx({
539
+ keeper: wallet.publicKey.toBase58(),
540
+ intent: intent.ownAddress!.toBase58(),
541
+ });
542
+ let res = await sdk.signAndSendTxPayloadBatchSequence({txPayloadBatchSequence: tx, wallet});
543
+ console.log(res);
544
+ }
545
+ continue;
546
+ }
547
+ }
548
+ let rebalanceIntents = await sdk.fetchAllRebalanceIntents();
549
+ for (let intent of rebalanceIntents) {
550
+ if (intent.formatted!.current_action == "not_active") { continue; }
551
+ if (intent.formatted!.current_action == "deposit_tokens") { continue; }
552
+ if (intent.formatted!.current_action == "start_price_updates") {
553
+ try {
554
+ let tx = await sdk.startPriceUpdatesTx({
555
+ keeper: wallet.publicKey.toBase58(),
556
+ basket: intent.basket.toBase58(),
557
+ rebalance_intent: intent.ownAddress!.toBase58(),
558
+ });
559
+ let res = await sdk.signAndSendTxPayloadBatchSequence({txPayloadBatchSequence: tx, wallet});
560
+ console.log(res);
561
+ } catch {}
562
+ continue;
563
+ }
564
+ if (intent.formatted!.current_action == "update_prices" && intent.formatted!.execution_start_time < now) {
565
+ try {
566
+ let tx = await sdk.updateTokenPricesTx({
567
+ keeper: wallet.publicKey.toBase58(),
568
+ basket: intent.basket.toBase58(),
569
+ rebalance_intent: intent.ownAddress!.toBase58(),
570
+ });
571
+ let res = await sdk.signAndSendTxPayloadBatchSequence({txPayloadBatchSequence: tx, wallet});
572
+ console.log(res);
573
+ } catch {}
574
+ continue;
575
+ }
576
+ if (intent.formatted!.current_action == "update_prices") { continue; }
577
+ if (intent.formatted!.auctions[2].end_time >= now) {
578
+ // SWAP
579
+ continue;
580
+ }
581
+ if (intent.formatted!.rebalance_type == "deposit") {
582
+ try {
583
+ let tx = await sdk.mintTx({
584
+ keeper: wallet.publicKey.toBase58(),
585
+ rebalance_intent: intent.ownAddress!.toBase58(),
586
+ });
587
+ let res = await sdk.signAndSendTxPayloadBatchSequence({txPayloadBatchSequence: tx, wallet});
588
+ console.log(res);
589
+ } catch {}
590
+ continue;
591
+ }
592
+ let hasTokens = intent.formatted!.tokens.find(token => token.amount > 0);
593
+ if (hasTokens && intent.formatted!.rebalance_type == "withdraw") {
594
+ try {
595
+ let tx = await sdk.redeemTokensTx({
596
+ keeper: wallet.publicKey.toBase58(),
597
+ rebalance_intent: intent.ownAddress!.toBase58(),
598
+ });
599
+ let res = await sdk.signAndSendTxPayloadBatchSequence({txPayloadBatchSequence: tx, wallet});
600
+ console.log(res);
601
+ } catch {}
602
+ continue;
603
+ }
604
+ try {
605
+ let tx = await sdk.claimBountyTx({
606
+ keeper: wallet.publicKey.toBase58(),
607
+ rebalance_intent: intent.ownAddress!.toBase58(),
608
+ });
609
+ let res = await sdk.signAndSendTxPayloadBatchSequence({txPayloadBatchSequence: tx, wallet});
610
+ console.log(res);
611
+ } catch {}
612
+ continue;
613
+ }
614
+ await delay(30 * 1000);
615
+ }
616
+ }
617
+
618
+ runKeeper();