@triadxyz/triad-protocol 0.5.4-beta.devnet → 0.5.6-beta.devnet

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/dist/index.d.ts CHANGED
@@ -14,22 +14,22 @@ export default class TriadProtocolClient {
14
14
  * Get User by wallet
15
15
  * @param wallet - User wallet
16
16
  */
17
- getUser: (wallet: PublicKey) => Promise<import("./types/stake").UserResponse>;
17
+ getUser(wallet: PublicKey): Promise<import("./types/stake").UserResponse>;
18
18
  /**
19
19
  * Get User by wallet
20
20
  * @param wallet - User wallet
21
21
  */
22
- getUsers: () => Promise<import("./types/stake").UserResponse[]>;
22
+ getUsers(): Promise<import("./types/stake").UserResponse[]>;
23
23
  /**
24
24
  * Check if user exists
25
25
  * @param username - User name
26
26
  */
27
- hasUser: (wallet: PublicKey) => Promise<boolean>;
27
+ hasUser(wallet: PublicKey): Promise<boolean>;
28
28
  /**
29
29
  * Get Refferal
30
30
  * @param name - User name
31
31
  */
32
- getReferral: (name: string) => Promise<string>;
32
+ getReferral(name: string): Promise<string>;
33
33
  /**
34
34
  * Create User
35
35
  * @param wallet - User wallet
@@ -37,5 +37,5 @@ export default class TriadProtocolClient {
37
37
  * @param referral - user referral
38
38
  *
39
39
  */
40
- createUser: ({ wallet, name, referral }: CreateUserArgs, options?: RpcOptions) => Promise<string>;
40
+ createUser({ wallet, name, referral }: CreateUserArgs, options?: RpcOptions): Promise<string>;
41
41
  }
package/dist/index.js CHANGED
@@ -20,30 +20,40 @@ const helpers_1 = require("./utils/helpers");
20
20
  const stake_1 = __importDefault(require("./stake"));
21
21
  class TriadProtocolClient {
22
22
  constructor(connection, wallet) {
23
- /**
24
- * Get User by wallet
25
- * @param wallet - User wallet
26
- */
27
- this.getUser = (wallet) => __awaiter(this, void 0, void 0, function* () {
23
+ this.provider = new anchor_1.AnchorProvider(connection, wallet, anchor_1.AnchorProvider.defaultOptions());
24
+ this.program = new anchor_1.Program(idl_triad_protocol_json_1.default, this.provider);
25
+ this.trade = new trade_1.default(this.program, this.provider);
26
+ this.stake = new stake_1.default(this.program, this.provider);
27
+ }
28
+ /**
29
+ * Get User by wallet
30
+ * @param wallet - User wallet
31
+ */
32
+ getUser(wallet) {
33
+ return __awaiter(this, void 0, void 0, function* () {
28
34
  const UserPDA = (0, helpers_1.getUserAddressSync)(this.program.programId, wallet);
29
35
  const response = yield this.program.account.user.fetch(UserPDA);
30
36
  return (0, helpers_1.formatUser)(response);
31
37
  });
32
- /**
33
- * Get User by wallet
34
- * @param wallet - User wallet
35
- */
36
- this.getUsers = () => __awaiter(this, void 0, void 0, function* () {
38
+ }
39
+ /**
40
+ * Get User by wallet
41
+ * @param wallet - User wallet
42
+ */
43
+ getUsers() {
44
+ return __awaiter(this, void 0, void 0, function* () {
37
45
  const response = yield this.program.account.user.all();
38
46
  return response
39
47
  .map((item) => (0, helpers_1.formatUser)(item.account))
40
48
  .sort((a, b) => b.referred - a.referred);
41
49
  });
42
- /**
43
- * Check if user exists
44
- * @param username - User name
45
- */
46
- this.hasUser = (wallet) => __awaiter(this, void 0, void 0, function* () {
50
+ }
51
+ /**
52
+ * Check if user exists
53
+ * @param username - User name
54
+ */
55
+ hasUser(wallet) {
56
+ return __awaiter(this, void 0, void 0, function* () {
47
57
  try {
48
58
  yield this.program.account.user.fetch((0, helpers_1.getUserAddressSync)(this.program.programId, wallet));
49
59
  return true;
@@ -52,11 +62,13 @@ class TriadProtocolClient {
52
62
  return false;
53
63
  }
54
64
  });
55
- /**
56
- * Get Refferal
57
- * @param name - User name
58
- */
59
- this.getReferral = (name) => __awaiter(this, void 0, void 0, function* () {
65
+ }
66
+ /**
67
+ * Get Refferal
68
+ * @param name - User name
69
+ */
70
+ getReferral(name) {
71
+ return __awaiter(this, void 0, void 0, function* () {
60
72
  try {
61
73
  const users = yield this.program.account.user.all([
62
74
  {
@@ -76,14 +88,16 @@ class TriadProtocolClient {
76
88
  return '';
77
89
  }
78
90
  });
79
- /**
80
- * Create User
81
- * @param wallet - User wallet
82
- * @param name - user name
83
- * @param referral - user referral
84
- *
85
- */
86
- this.createUser = ({ wallet, name, referral }, options) => {
91
+ }
92
+ /**
93
+ * Create User
94
+ * @param wallet - User wallet
95
+ * @param name - user name
96
+ * @param referral - user referral
97
+ *
98
+ */
99
+ createUser({ wallet, name, referral }, options) {
100
+ return __awaiter(this, void 0, void 0, function* () {
87
101
  const method = this.program.methods
88
102
  .createUser({
89
103
  name
@@ -101,11 +115,7 @@ class TriadProtocolClient {
101
115
  ]);
102
116
  }
103
117
  return method.rpc({ skipPreflight: options === null || options === void 0 ? void 0 : options.skipPreflight });
104
- };
105
- this.provider = new anchor_1.AnchorProvider(connection, wallet, anchor_1.AnchorProvider.defaultOptions());
106
- this.program = new anchor_1.Program(idl_triad_protocol_json_1.default, this.provider);
107
- this.trade = new trade_1.default(this.program, this.provider);
108
- this.stake = new stake_1.default(this.program, this.provider);
118
+ });
109
119
  }
110
120
  }
111
121
  exports.default = TriadProtocolClient;
@@ -13,22 +13,29 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  const fs_1 = __importDefault(require("fs"));
16
- const web3_js_1 = require("@solana/web3.js");
17
16
  const index_1 = __importDefault(require("./index"));
18
17
  const anchor_1 = require("@coral-xyz/anchor");
19
- const constants_1 = require("./utils/constants");
20
18
  const axios_1 = __importDefault(require("axios"));
21
- const file = fs_1.default.readFileSync('/Users/dannpl/.config/solana/triad-builder.json');
22
- const rpc_file = fs_1.default.readFileSync('/Users/dannpl/.config/solana/rpc.txt');
19
+ const web3_js_1 = require("@solana/web3.js");
20
+ const file = fs_1.default.readFileSync('/Users/dannpl/.config/solana/id.json');
21
+ const rpc_file = fs_1.default.readFileSync('/Users/dannpl/.config/solana/rpc-devnet.txt');
23
22
  const keypair = web3_js_1.Keypair.fromSecretKey(new Uint8Array(JSON.parse(file.toString())));
24
23
  const connection = new web3_js_1.Connection(rpc_file.toString(), 'confirmed');
25
24
  const wallet = new anchor_1.Wallet(keypair);
26
25
  const triadProtocol = new index_1.default(connection, wallet);
27
- const depositStakeRewards = () => __awaiter(void 0, void 0, void 0, function* () {
28
- const response = yield triadProtocol.stake.depositStakeRewards({
29
- wallet: wallet.publicKey,
30
- mint: constants_1.TRD_MINT,
31
- amount: new anchor_1.BN(0 * Math.pow(10, 6))
26
+ const markets = [
27
+ { name: 'JUPITER/TRD', marketId: 0 },
28
+ { name: 'DRIFT/TRD', marketId: 1 },
29
+ { name: 'PYTH/TRD', marketId: 2 },
30
+ { name: 'UNDEAD/TRD', marketId: 3 },
31
+ { name: 'MADLADS/TRD', marketId: 4 },
32
+ { name: 'DEGODS/TRD', marketId: 5 },
33
+ { name: 'ISLANDDAO/TRD', marketId: 6 },
34
+ { name: 'COLOSSEUM/TRD', marketId: 7 }
35
+ ];
36
+ const updateStakeVault = () => __awaiter(void 0, void 0, void 0, function* () {
37
+ const response = yield triadProtocol.stake.updateStakeVault({
38
+ wallet: wallet.publicKey
32
39
  });
33
40
  console.log(response);
34
41
  });
@@ -51,3 +58,34 @@ const updateBoost = () => __awaiter(void 0, void 0, void 0, function* () {
51
58
  });
52
59
  console.log(updateBoostResponse);
53
60
  });
61
+ const getMarkets = () => __awaiter(void 0, void 0, void 0, function* () {
62
+ const response = yield triadProtocol.trade.getMarkets();
63
+ console.log(response);
64
+ });
65
+ const initializeAllMarkets = () => __awaiter(void 0, void 0, void 0, function* () {
66
+ for (const market of markets) {
67
+ try {
68
+ const response = yield triadProtocol.trade.initializeMarket(market, {
69
+ skipPreflight: true
70
+ });
71
+ console.log(`Initialized market ${market.name}:`, response);
72
+ }
73
+ catch (error) {
74
+ console.error(`Error initializing market ${market.name}:`, error);
75
+ }
76
+ }
77
+ });
78
+ const openOrder = () => __awaiter(void 0, void 0, void 0, function* () {
79
+ const response = yield triadProtocol.trade.openOrder(0, {
80
+ amount: 100,
81
+ direction: {
82
+ hype: {}
83
+ },
84
+ orderType: {
85
+ market: {}
86
+ },
87
+ comment: 'test'
88
+ });
89
+ console.log(response);
90
+ });
91
+ openOrder();
package/dist/stake.d.ts CHANGED
@@ -3,7 +3,7 @@ import { AnchorProvider, Program } from '@coral-xyz/anchor';
3
3
  import { PublicKey } from '@solana/web3.js';
4
4
  import { TriadProtocol } from './types/triad_protocol';
5
5
  import { RpcOptions } from './types';
6
- import { DepositStakeRewardsArgs, StakeNftArgs, RequestWithdrawArgs, WithdrawArgs, StakeResponse, ClaimStakeRewardsArgs, StakeTokenArgs, UpdateBoostArgs } from './types/stake';
6
+ import { UpdateStakeVaultArgs, StakeNftArgs, RequestWithdrawArgs, WithdrawArgs, StakeResponse, ClaimStakeRewardsArgs, StakeTokenArgs, UpdateBoostArgs } from './types/stake';
7
7
  export default class Stake {
8
8
  program: Program<TriadProtocol>;
9
9
  provider: AnchorProvider;
@@ -52,13 +52,13 @@ export default class Stake {
52
52
  */
53
53
  stakeToken({ name, wallet, amount }: StakeTokenArgs, options?: RpcOptions): Promise<string>;
54
54
  /**
55
- * Deposit Stake Rewards
55
+ * Update Stake Vault
56
56
  * @param wallet - User wallet
57
- * @param mint - NFT mint
58
- * @param amount - Reward amount
57
+ * @param amount - Reward amount to deposit (optional)
58
+ * @param status - Status of the stake vault (optional)
59
59
  *
60
60
  */
61
- depositStakeRewards({ wallet, mint, amount }: DepositStakeRewardsArgs, options?: RpcOptions): Promise<string>;
61
+ updateStakeVault({ wallet, amount, status }: UpdateStakeVaultArgs, options?: RpcOptions): Promise<string>;
62
62
  /**
63
63
  * Request Withdraw
64
64
  * @param wallet - User wallet
package/dist/stake.js CHANGED
@@ -135,13 +135,11 @@ class Stake {
135
135
  }));
136
136
  }
137
137
  const { blockhash } = yield this.provider.connection.getLatestBlockhash();
138
- const messageV0 = new web3_js_1.TransactionMessage({
138
+ return this.provider.sendAndConfirm(new web3_js_1.VersionedTransaction(new web3_js_1.TransactionMessage({
139
139
  instructions: ixs,
140
140
  recentBlockhash: blockhash,
141
141
  payerKey: wallet
142
- }).compileToV0Message();
143
- const tx = new web3_js_1.VersionedTransaction(messageV0);
144
- return this.provider.sendAndConfirm(tx, [], {
142
+ }).compileToV0Message()), [], {
145
143
  skipPreflight: options === null || options === void 0 ? void 0 : options.skipPreflight,
146
144
  commitment: 'confirmed'
147
145
  });
@@ -179,22 +177,23 @@ class Stake {
179
177
  });
180
178
  }
181
179
  /**
182
- * Deposit Stake Rewards
180
+ * Update Stake Vault
183
181
  * @param wallet - User wallet
184
- * @param mint - NFT mint
185
- * @param amount - Reward amount
182
+ * @param amount - Reward amount to deposit (optional)
183
+ * @param status - Status of the stake vault (optional)
186
184
  *
187
185
  */
188
- depositStakeRewards({ wallet, mint, amount }, options) {
186
+ updateStakeVault({ wallet, amount, status }, options) {
189
187
  return __awaiter(this, void 0, void 0, function* () {
190
188
  const method = this.program.methods
191
- .depositStakeRewards({
189
+ .updateStakeVault({
192
190
  amount,
191
+ status,
193
192
  stakeVault: this.stakeVaultName
194
193
  })
195
194
  .accounts({
196
195
  signer: wallet,
197
- mint: mint
196
+ mint: constants_1.TRD_MINT
198
197
  });
199
198
  if (options === null || options === void 0 ? void 0 : options.microLamports) {
200
199
  method.postInstructions([
package/dist/trade.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import { AnchorProvider, Program } from '@coral-xyz/anchor';
2
2
  import { TriadProtocol } from './types/triad_protocol';
3
- import { Market } from './types/trade';
4
3
  import { PublicKey } from '@solana/web3.js';
4
+ import { Market, OrderDirection, OrderType } from './types/trade';
5
+ import { RpcOptions } from './types';
5
6
  export default class Trade {
6
7
  program: Program<TriadProtocol>;
7
8
  provider: AnchorProvider;
@@ -10,8 +11,22 @@ export default class Trade {
10
11
  * Get all Markets
11
12
  */
12
13
  getMarkets(): Promise<Market[]>;
14
+ getMarketByAddress(address: PublicKey): Promise<Market>;
13
15
  /**
14
- * Get Market By Address
16
+ * Initialize Market
17
+ * @param market id - new markert id - length + 1
18
+ * @param name - PYTH/TRD JUP/TRD DRIFT/TRD
19
+ *
15
20
  */
16
- getMarketByAddress(address: PublicKey): Promise<Market>;
21
+ initializeMarket({ marketId, name }: {
22
+ marketId: number;
23
+ name: string;
24
+ }, options?: RpcOptions): Promise<string>;
25
+ openOrder(marketId: number, args: {
26
+ amount: number;
27
+ direction: OrderDirection;
28
+ orderType: OrderType;
29
+ limitPrice?: number;
30
+ comment?: string;
31
+ }, options?: RpcOptions): Promise<string>;
17
32
  }
package/dist/trade.js CHANGED
@@ -8,7 +8,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
+ const web3_js_1 = require("@solana/web3.js");
16
+ const bn_js_1 = __importDefault(require("bn.js"));
17
+ const constants_1 = require("./utils/constants");
18
+ const helpers_1 = require("./utils/helpers");
12
19
  class Trade {
13
20
  constructor(program, provider) {
14
21
  this.provider = provider;
@@ -19,8 +26,9 @@ class Trade {
19
26
  */
20
27
  getMarkets() {
21
28
  return __awaiter(this, void 0, void 0, function* () {
22
- return this.program.account.market.all().then((markets) => markets.map(({ account }) => ({
29
+ return this.program.account.market.all().then((markets) => markets.map(({ account, publicKey }) => ({
23
30
  bump: account.bump,
31
+ address: publicKey.toString(),
24
32
  authority: account.authority.toString(),
25
33
  marketId: account.marketId.toNumber(),
26
34
  name: account.name,
@@ -33,7 +41,8 @@ class Trade {
33
41
  totalVolume: account.totalVolume.toNumber(),
34
42
  vaultTokenAccount: account.vaultTokenAccount.toString(),
35
43
  mint: account.mint.toString(),
36
- lastUpdateTs: account.lastUpdateTs.toNumber(),
44
+ ts: account.ts.toNumber(),
45
+ updateTs: account.updateTs.toNumber(),
37
46
  openOrdersCount: account.openOrdersCount.toNumber(),
38
47
  nextOrderId: account.nextOrderId.toNumber(),
39
48
  feeBps: account.feeBps,
@@ -43,14 +52,12 @@ class Trade {
43
52
  })));
44
53
  });
45
54
  }
46
- /**
47
- * Get Market By Address
48
- */
49
55
  getMarketByAddress(address) {
50
56
  return __awaiter(this, void 0, void 0, function* () {
51
57
  const account = yield this.program.account.market.fetch(address);
52
58
  return {
53
59
  bump: account.bump,
60
+ address: address.toString(),
54
61
  authority: account.authority.toString(),
55
62
  marketId: account.marketId.toNumber(),
56
63
  name: account.name,
@@ -63,7 +70,8 @@ class Trade {
63
70
  totalVolume: account.totalVolume.toNumber(),
64
71
  vaultTokenAccount: account.vaultTokenAccount.toString(),
65
72
  mint: account.mint.toString(),
66
- lastUpdateTs: account.lastUpdateTs.toNumber(),
73
+ ts: account.ts.toNumber(),
74
+ updateTs: account.updateTs.toNumber(),
67
75
  openOrdersCount: account.openOrdersCount.toNumber(),
68
76
  nextOrderId: account.nextOrderId.toNumber(),
69
77
  feeBps: account.feeBps,
@@ -73,5 +81,60 @@ class Trade {
73
81
  };
74
82
  });
75
83
  }
84
+ /**
85
+ * Initialize Market
86
+ * @param market id - new markert id - length + 1
87
+ * @param name - PYTH/TRD JUP/TRD DRIFT/TRD
88
+ *
89
+ */
90
+ initializeMarket({ marketId, name }, options) {
91
+ return __awaiter(this, void 0, void 0, function* () {
92
+ const method = this.program.methods
93
+ .initializeMarket({
94
+ marketId: new bn_js_1.default(marketId),
95
+ name: name
96
+ })
97
+ .accounts({
98
+ signer: this.provider.publicKey,
99
+ mint: constants_1.TRD_MINT
100
+ });
101
+ if (options === null || options === void 0 ? void 0 : options.microLamports) {
102
+ method.postInstructions([
103
+ web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({
104
+ microLamports: options.microLamports
105
+ })
106
+ ]);
107
+ }
108
+ return method.rpc({ skipPreflight: options === null || options === void 0 ? void 0 : options.skipPreflight });
109
+ });
110
+ }
111
+ openOrder(marketId, args, options) {
112
+ return __awaiter(this, void 0, void 0, function* () {
113
+ const marketPDA = (0, helpers_1.getMarketAddressSync)(this.program.programId, marketId);
114
+ const method = this.program.methods
115
+ .openOrder({
116
+ amount: new bn_js_1.default(args.amount / Math.pow(10, constants_1.TRD_DECIMALS)),
117
+ direction: args.direction,
118
+ orderType: args.orderType,
119
+ limitPrice: args.limitPrice
120
+ ? new bn_js_1.default(args.limitPrice / Math.pow(10, constants_1.TRD_DECIMALS))
121
+ : undefined,
122
+ comment: (0, helpers_1.encodeString)(args.comment, 64)
123
+ })
124
+ .accounts({
125
+ signer: this.provider.publicKey,
126
+ market: marketPDA,
127
+ mint: constants_1.TRD_MINT
128
+ });
129
+ if (options === null || options === void 0 ? void 0 : options.microLamports) {
130
+ method.postInstructions([
131
+ web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({
132
+ microLamports: options.microLamports
133
+ })
134
+ ]);
135
+ }
136
+ return method.rpc({ skipPreflight: options === null || options === void 0 ? void 0 : options.skipPreflight });
137
+ });
138
+ }
76
139
  }
77
140
  exports.default = Trade;