@triadxyz/triad-protocol 0.0.1-beta → 0.0.3-beta

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.
@@ -12,6 +12,63 @@ export type TriadProtocol = {
12
12
  spec: '0.1.0';
13
13
  };
14
14
  instructions: [
15
+ {
16
+ name: 'claimStakeRewards';
17
+ discriminator: [107, 91, 233, 196, 211, 47, 218, 21];
18
+ accounts: [
19
+ {
20
+ name: 'signer';
21
+ writable: true;
22
+ signer: true;
23
+ },
24
+ {
25
+ name: 'stakeVault';
26
+ writable: true;
27
+ },
28
+ {
29
+ name: 'stake';
30
+ writable: true;
31
+ },
32
+ {
33
+ name: 'nftRewards';
34
+ writable: true;
35
+ },
36
+ {
37
+ name: 'mint';
38
+ writable: true;
39
+ },
40
+ {
41
+ name: 'fromAta';
42
+ writable: true;
43
+ },
44
+ {
45
+ name: 'toAta';
46
+ writable: true;
47
+ },
48
+ {
49
+ name: 'tokenProgram';
50
+ address: 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb';
51
+ },
52
+ {
53
+ name: 'associatedTokenProgram';
54
+ address: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL';
55
+ },
56
+ {
57
+ name: 'systemProgram';
58
+ address: '11111111111111111111111111111111';
59
+ }
60
+ ];
61
+ args: [
62
+ {
63
+ name: 'args';
64
+ type: {
65
+ defined: {
66
+ name: 'claimStakeRewardsArgs';
67
+ };
68
+ };
69
+ }
70
+ ];
71
+ },
15
72
  {
16
73
  name: 'closePosition';
17
74
  discriminator: [123, 134, 81, 0, 49, 68, 98, 98];
@@ -321,6 +378,31 @@ export type TriadProtocol = {
321
378
  }
322
379
  ];
323
380
  },
381
+ {
382
+ name: 'jupiterSwap';
383
+ discriminator: [116, 207, 0, 196, 252, 120, 243, 18];
384
+ accounts: [
385
+ {
386
+ name: 'userAccount';
387
+ writable: true;
388
+ signer: true;
389
+ },
390
+ {
391
+ name: 'jupiterProgram';
392
+ address: 'JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4';
393
+ },
394
+ {
395
+ name: 'systemProgram';
396
+ address: '11111111111111111111111111111111';
397
+ }
398
+ ];
399
+ args: [
400
+ {
401
+ name: 'data';
402
+ type: 'bytes';
403
+ }
404
+ ];
405
+ },
324
406
  {
325
407
  name: 'openPosition';
326
408
  discriminator: [135, 128, 47, 77, 15, 152, 240, 49];
@@ -548,6 +630,80 @@ export type TriadProtocol = {
548
630
  }
549
631
  ];
550
632
  },
633
+ {
634
+ name: 'updateStakeRewards';
635
+ discriminator: [39, 82, 38, 43, 234, 67, 69, 94];
636
+ accounts: [
637
+ {
638
+ name: 'signer';
639
+ writable: true;
640
+ signer: true;
641
+ },
642
+ {
643
+ name: 'stake';
644
+ writable: true;
645
+ },
646
+ {
647
+ name: 'nftRewards';
648
+ writable: true;
649
+ pda: {
650
+ seeds: [
651
+ {
652
+ kind: 'const';
653
+ value: [110, 102, 116, 95, 114, 101, 119, 97, 114, 100, 115];
654
+ },
655
+ {
656
+ kind: 'account';
657
+ path: 'stake';
658
+ }
659
+ ];
660
+ };
661
+ },
662
+ {
663
+ name: 'systemProgram';
664
+ address: '11111111111111111111111111111111';
665
+ }
666
+ ];
667
+ args: [
668
+ {
669
+ name: 'args';
670
+ type: {
671
+ defined: {
672
+ name: 'updateStakeRewardsArgs';
673
+ };
674
+ };
675
+ }
676
+ ];
677
+ },
678
+ {
679
+ name: 'updateStakeVaultStatus';
680
+ discriminator: [71, 64, 188, 150, 86, 254, 221, 65];
681
+ accounts: [
682
+ {
683
+ name: 'signer';
684
+ writable: true;
685
+ signer: true;
686
+ },
687
+ {
688
+ name: 'stakeVault';
689
+ writable: true;
690
+ },
691
+ {
692
+ name: 'systemProgram';
693
+ address: '11111111111111111111111111111111';
694
+ }
695
+ ];
696
+ args: [
697
+ {
698
+ name: 'args';
699
+ type: {
700
+ defined: {
701
+ name: 'updateStakeVaultStatusArgs';
702
+ };
703
+ };
704
+ }
705
+ ];
706
+ },
551
707
  {
552
708
  name: 'updateTickerPrice';
553
709
  discriminator: [203, 166, 139, 83, 76, 144, 250, 29];
@@ -618,6 +774,14 @@ export type TriadProtocol = {
618
774
  ];
619
775
  };
620
776
  },
777
+ {
778
+ name: 'admin';
779
+ writable: true;
780
+ },
781
+ {
782
+ name: 'nftRewards';
783
+ writable: true;
784
+ },
621
785
  {
622
786
  name: 'mint';
623
787
  writable: true;
@@ -656,6 +820,10 @@ export type TriadProtocol = {
656
820
  }
657
821
  ];
658
822
  accounts: [
823
+ {
824
+ name: 'nftRewards';
825
+ discriminator: [210, 99, 18, 65, 58, 128, 167, 91];
826
+ },
659
827
  {
660
828
  name: 'stake';
661
829
  discriminator: [150, 197, 176, 29, 55, 132, 112, 149];
@@ -694,106 +862,113 @@ export type TriadProtocol = {
694
862
  errors: [
695
863
  {
696
864
  code: 6000;
697
- name: 'unauthorizedToDeleteProject';
698
- msg: 'Unauthorized to delete the project';
699
- },
700
- {
701
- code: 6001;
702
- name: 'invalidShadowAccount';
703
- msg: 'Invalid shadow account';
704
- },
705
- {
706
- code: 6002;
707
865
  name: 'invalidAccount';
708
866
  msg: 'Invalid account';
709
867
  },
710
868
  {
711
- code: 6003;
869
+ code: 6001;
712
870
  name: 'unauthorized';
713
871
  msg: 'Unauthorized access';
714
872
  },
715
873
  {
716
- code: 6004;
717
- name: 'alphaVantageApiError';
718
- msg: 'Failed to get data from Vybe Network';
719
- },
720
- {
721
- code: 6005;
874
+ code: 6002;
722
875
  name: 'depositFailed';
723
876
  msg: 'Failed to deposit';
724
877
  },
725
878
  {
726
- code: 6006;
879
+ code: 6003;
727
880
  name: 'invalidOwnerAuthority';
728
881
  msg: 'Invalid Owner authority';
729
882
  },
730
883
  {
731
- code: 6007;
884
+ code: 6004;
732
885
  name: 'invalidPosition';
733
886
  msg: 'Invalid Position';
734
887
  },
735
888
  {
736
- code: 6008;
889
+ code: 6005;
737
890
  name: 'invalidTickerPosition';
738
891
  msg: 'Invalid Ticker position';
739
892
  },
740
893
  {
741
- code: 6009;
894
+ code: 6006;
742
895
  name: 'noFreePositionSlot';
743
896
  msg: 'No free position slot';
744
897
  },
745
898
  {
746
- code: 6010;
899
+ code: 6007;
747
900
  name: 'invalidMintAddress';
748
901
  msg: 'Invalid Mint address';
749
902
  },
750
903
  {
751
- code: 6011;
904
+ code: 6008;
752
905
  name: 'invalidProfitShare';
753
906
  msg: 'Invalid Profit Share';
754
907
  },
755
908
  {
756
- code: 6012;
909
+ code: 6009;
757
910
  name: 'invalidDepositAmount';
758
911
  msg: 'Invalid Deposit Amount';
759
912
  },
760
913
  {
761
- code: 6013;
914
+ code: 6010;
762
915
  name: 'invalidWithdrawAmount';
763
916
  msg: 'Invalid Withdraw Amount';
764
917
  },
765
918
  {
766
- code: 6014;
919
+ code: 6011;
767
920
  name: 'invalidStakeVault';
768
921
  msg: 'Invalid Stake Vault';
769
922
  },
770
923
  {
771
- code: 6015;
924
+ code: 6012;
772
925
  name: 'invalidStakeVaultAuthority';
773
926
  msg: 'Invalid Stake Vault Authority';
774
927
  },
775
928
  {
776
- code: 6016;
929
+ code: 6013;
777
930
  name: 'invalidStakeVaultAmount';
778
931
  msg: 'Invalid Stake Vault Amount';
779
932
  },
780
933
  {
781
- code: 6017;
934
+ code: 6014;
782
935
  name: 'stakeVaultLocked';
783
936
  msg: 'Stake Vault Available';
784
937
  },
785
938
  {
786
- code: 6018;
939
+ code: 6015;
787
940
  name: 'stakeLocked';
788
941
  msg: 'Stake is locked';
789
942
  },
790
943
  {
791
- code: 6019;
944
+ code: 6016;
792
945
  name: 'stakeVaultFull';
793
946
  msg: 'Stake Vault Full';
947
+ },
948
+ {
949
+ code: 6017;
950
+ name: 'invalidMint';
951
+ msg: 'Invalid Mint';
952
+ },
953
+ {
954
+ code: 6018;
955
+ name: 'invalidStakeVaultWeek';
956
+ msg: 'Invalid Stake Vault Week';
794
957
  }
795
958
  ];
796
959
  types: [
960
+ {
961
+ name: 'claimStakeRewardsArgs';
962
+ type: {
963
+ kind: 'struct';
964
+ fields: [
965
+ {
966
+ name: 'week';
967
+ type: 'u8';
968
+ }
969
+ ];
970
+ };
971
+ },
797
972
  {
798
973
  name: 'closePositionArgs';
799
974
  type: {
@@ -918,6 +1093,34 @@ export type TriadProtocol = {
918
1093
  ];
919
1094
  };
920
1095
  },
1096
+ {
1097
+ name: 'nftRewards';
1098
+ type: {
1099
+ kind: 'struct';
1100
+ fields: [
1101
+ {
1102
+ name: 'stake';
1103
+ type: 'pubkey';
1104
+ },
1105
+ {
1106
+ name: 'dailyRewards';
1107
+ type: {
1108
+ array: ['u64', 30];
1109
+ };
1110
+ },
1111
+ {
1112
+ name: 'weeklyRewardsPaid';
1113
+ type: {
1114
+ array: ['bool', 5];
1115
+ };
1116
+ },
1117
+ {
1118
+ name: 'apr';
1119
+ type: 'f32';
1120
+ }
1121
+ ];
1122
+ };
1123
+ },
921
1124
  {
922
1125
  name: 'openPositionArgs';
923
1126
  type: {
@@ -1193,10 +1396,14 @@ export type TriadProtocol = {
1193
1396
  name: 'usersPaid';
1194
1397
  type: 'pubkey';
1195
1398
  },
1399
+ {
1400
+ name: 'week';
1401
+ type: 'u8';
1402
+ },
1196
1403
  {
1197
1404
  name: 'padding';
1198
1405
  type: {
1199
- array: ['u8', 64];
1406
+ array: ['u8', 56];
1200
1407
  };
1201
1408
  }
1202
1409
  ];
@@ -1272,6 +1479,42 @@ export type TriadProtocol = {
1272
1479
  ];
1273
1480
  };
1274
1481
  },
1482
+ {
1483
+ name: 'updateStakeRewardsArgs';
1484
+ type: {
1485
+ kind: 'struct';
1486
+ fields: [
1487
+ {
1488
+ name: 'day';
1489
+ type: 'u8';
1490
+ },
1491
+ {
1492
+ name: 'rewards';
1493
+ type: 'u64';
1494
+ },
1495
+ {
1496
+ name: 'apr';
1497
+ type: 'f32';
1498
+ }
1499
+ ];
1500
+ };
1501
+ },
1502
+ {
1503
+ name: 'updateStakeVaultStatusArgs';
1504
+ type: {
1505
+ kind: 'struct';
1506
+ fields: [
1507
+ {
1508
+ name: 'isLocked';
1509
+ type: 'bool';
1510
+ },
1511
+ {
1512
+ name: 'week';
1513
+ type: 'u8';
1514
+ }
1515
+ ];
1516
+ };
1517
+ },
1275
1518
  {
1276
1519
  name: 'updateTickerPriceArgs';
1277
1520
  type: {
@@ -1,6 +1,7 @@
1
1
  export declare const TRIAD_PROTOCOL_PROGRAM_ID = "TRDwq3BN4mP3m9KsuNUWSN6QDff93VKGSwE95Jbr9Ss";
2
2
  export declare const ATA_PROGRAM_ID = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL";
3
- export declare const STAKE_SEASON = "Triad Share 1";
3
+ export declare const ADMIN = "";
4
+ export declare const STAKE_SEASON_1 = "Triad Share 1";
4
5
  export declare const TTRIAD_DECIMALS = 6;
5
6
  export declare const TTRIAD_FEE = 2;
6
7
  export declare const RARITY_RANK_SEASON_1: {
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RARITY_RANK_SEASON_1 = exports.TTRIAD_FEE = exports.TTRIAD_DECIMALS = exports.STAKE_SEASON = exports.ATA_PROGRAM_ID = exports.TRIAD_PROTOCOL_PROGRAM_ID = void 0;
3
+ exports.RARITY_RANK_SEASON_1 = exports.TTRIAD_FEE = exports.TTRIAD_DECIMALS = exports.STAKE_SEASON_1 = exports.ADMIN = exports.ATA_PROGRAM_ID = exports.TRIAD_PROTOCOL_PROGRAM_ID = void 0;
4
4
  exports.TRIAD_PROTOCOL_PROGRAM_ID = 'TRDwq3BN4mP3m9KsuNUWSN6QDff93VKGSwE95Jbr9Ss';
5
5
  exports.ATA_PROGRAM_ID = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL';
6
- exports.STAKE_SEASON = 'Triad Share 1';
6
+ exports.ADMIN = '';
7
+ exports.STAKE_SEASON_1 = 'Triad Share 1';
7
8
  exports.TTRIAD_DECIMALS = 6;
8
9
  exports.TTRIAD_FEE = 2;
9
10
  exports.RARITY_RANK_SEASON_1 = {
@@ -1,3 +1,4 @@
1
+ import { COLLECTION_MUlTIPLIER, StakeResponse, StakeVaultResponse } from './../types/stake';
1
2
  import { PublicKey } from '@solana/web3.js';
2
3
  import BN from 'bn.js';
3
4
  export declare const getTickerAddressSync: (programId: PublicKey, tickerName: string) => PublicKey;
@@ -7,5 +8,19 @@ export declare const getVaultAddressSync: (programId: PublicKey, tickerAddress:
7
8
  export declare const getTokenVaultAddressSync: (programId: PublicKey, vault: PublicKey) => PublicKey;
8
9
  export declare function getUserPositionAddressSync(programId: PublicKey, authority: PublicKey, ticker: PublicKey): PublicKey;
9
10
  export declare const getStakeVaultAddressSync: (programId: PublicKey, vaultName: string) => PublicKey;
11
+ export declare const getStakeAddressSync: (programId: PublicKey, nftName: string) => PublicKey;
12
+ export declare const getNFTRewardsAddressSync: (programId: PublicKey, stake: PublicKey) => PublicKey;
10
13
  export declare const getATASync: (address: PublicKey, Mint: PublicKey) => PublicKey;
11
14
  export declare const formatNumber: (number: bigint | BN, decimals?: number) => number;
15
+ export declare const formatStakeVault: (stakeVault: any) => StakeVaultResponse;
16
+ export declare const formatStake: (stake: any) => StakeResponse;
17
+ export declare const calculateTotalMultiplier: (collections: COLLECTION_MUlTIPLIER[], rank: {
18
+ max: number;
19
+ currentPosition: number;
20
+ }) => number;
21
+ export declare const calculateAPR: ({ rewards, rate, amount, baseRewards }: {
22
+ rewards: number;
23
+ rate: number;
24
+ amount: number;
25
+ baseRewards: number;
26
+ }) => number;
@@ -23,7 +23,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.formatNumber = exports.getATASync = exports.getStakeVaultAddressSync = exports.getUserPositionAddressSync = exports.getTokenVaultAddressSync = exports.getVaultAddressSync = exports.decodeString = exports.encodeString = exports.getTickerAddressSync = void 0;
26
+ exports.calculateAPR = exports.calculateTotalMultiplier = exports.formatStake = exports.formatStakeVault = exports.formatNumber = exports.getATASync = exports.getNFTRewardsAddressSync = exports.getStakeAddressSync = exports.getStakeVaultAddressSync = exports.getUserPositionAddressSync = exports.getTokenVaultAddressSync = exports.getVaultAddressSync = exports.decodeString = exports.encodeString = exports.getTickerAddressSync = void 0;
27
+ const stake_1 = require("./../types/stake");
27
28
  const web3_js_1 = require("@solana/web3.js");
28
29
  const anchor = __importStar(require("@coral-xyz/anchor"));
29
30
  const spl_token_1 = require("@solana/spl-token");
@@ -75,6 +76,16 @@ const getStakeVaultAddressSync = (programId, vaultName) => {
75
76
  return StakeVaultPDA;
76
77
  };
77
78
  exports.getStakeVaultAddressSync = getStakeVaultAddressSync;
79
+ const getStakeAddressSync = (programId, nftName) => {
80
+ const [StakePDA] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from('stake'), Buffer.from(nftName)], programId);
81
+ return StakePDA;
82
+ };
83
+ exports.getStakeAddressSync = getStakeAddressSync;
84
+ const getNFTRewardsAddressSync = (programId, stake) => {
85
+ const [NFTRewardsPDA] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from('nft_rewards'), stake.toBuffer()], programId);
86
+ return NFTRewardsPDA;
87
+ };
88
+ exports.getNFTRewardsAddressSync = getNFTRewardsAddressSync;
78
89
  const getATASync = (address, Mint) => {
79
90
  const [ATA] = web3_js_1.PublicKey.findProgramAddressSync([address.toBytes(), spl_token_1.TOKEN_2022_PROGRAM_ID.toBytes(), Mint.toBytes()], new web3_js_1.PublicKey(constants_1.ATA_PROGRAM_ID));
80
91
  return ATA;
@@ -84,3 +95,50 @@ const formatNumber = (number, decimals = 6) => {
84
95
  return Number(number.toString()) / Math.pow(10, decimals);
85
96
  };
86
97
  exports.formatNumber = formatNumber;
98
+ const formatStakeVault = (stakeVault) => {
99
+ return {
100
+ name: stakeVault.name,
101
+ collection: stakeVault.collection,
102
+ slots: stakeVault.slots.toNumber(),
103
+ amount: stakeVault.amount.toNumber(),
104
+ isLocked: stakeVault.isLocked,
105
+ usersPaid: stakeVault.usersPaid.toBase58(),
106
+ amountPaid: stakeVault.amountPaid.toNumber(),
107
+ amountUsers: stakeVault.amountUsers.toNumber(),
108
+ week: stakeVault.week,
109
+ apr: stakeVault.apr,
110
+ initTs: stakeVault.initTs.toNumber(),
111
+ endTs: stakeVault.endTs.toNumber()
112
+ };
113
+ };
114
+ exports.formatStakeVault = formatStakeVault;
115
+ const formatStake = (stake) => {
116
+ return {
117
+ name: stake.name,
118
+ collections: stake.collections,
119
+ rarity: Object.keys(stake.rarity)[0],
120
+ stakeVault: stake.stakeVault.toBase58(),
121
+ authority: stake.authority.toBase58(),
122
+ initTs: stake.initTs.toNumber(),
123
+ isLocked: stake.isLocked,
124
+ withdrawTs: stake.withdrawTs.toNumber(),
125
+ mint: stake.mint.toBase58(),
126
+ stakeRewards: stake.stakeRewards.toBase58()
127
+ };
128
+ };
129
+ exports.formatStake = formatStake;
130
+ const calculateTotalMultiplier = (collections, rank) => {
131
+ let multiplier = 1;
132
+ collections.forEach((collection) => {
133
+ if (stake_1.COLLECTION_MUlTIPLIER[collection]) {
134
+ multiplier *= Number(stake_1.COLLECTION_MUlTIPLIER[collection]);
135
+ }
136
+ });
137
+ let rankMultiplier = (rank.max + 1 - rank.currentPosition) / rank.max;
138
+ return multiplier * rankMultiplier;
139
+ };
140
+ exports.calculateTotalMultiplier = calculateTotalMultiplier;
141
+ const calculateAPR = ({ rewards, rate, amount, baseRewards }) => {
142
+ return ((rewards * rate) / (amount * baseRewards)) * 100;
143
+ };
144
+ exports.calculateAPR = calculateAPR;