@deriverse/kit 1.0.39 → 1.0.42

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 (62) hide show
  1. package/dist/auto_buffer.d.ts +0 -2
  2. package/dist/auto_data.d.ts +0 -2
  3. package/dist/constants.d.ts +14 -0
  4. package/dist/constants.js +28 -0
  5. package/dist/engine/account-helpers.d.ts +59 -0
  6. package/dist/engine/account-helpers.js +177 -0
  7. package/dist/engine/account-helpers.test.d.ts +1 -0
  8. package/dist/engine/account-helpers.test.js +199 -0
  9. package/dist/engine/client-queries.d.ts +36 -0
  10. package/dist/engine/client-queries.js +498 -0
  11. package/dist/engine/client-queries.test.d.ts +1 -0
  12. package/dist/engine/client-queries.test.js +341 -0
  13. package/dist/engine/context-builders.d.ts +16 -0
  14. package/dist/engine/context-builders.js +158 -0
  15. package/dist/engine/context-builders.test.d.ts +1 -0
  16. package/dist/engine/context-builders.test.js +156 -0
  17. package/dist/engine/index.d.ts +101 -0
  18. package/dist/engine/index.js +745 -0
  19. package/dist/engine/index.test.d.ts +1 -0
  20. package/dist/engine/index.test.js +685 -0
  21. package/dist/engine/logs-decoder.d.ts +18 -0
  22. package/dist/engine/logs-decoder.js +525 -0
  23. package/dist/engine/logs-decoder.test.d.ts +1 -0
  24. package/dist/engine/logs-decoder.test.js +836 -0
  25. package/dist/engine/perp-instructions.d.ts +68 -0
  26. package/dist/engine/perp-instructions.js +497 -0
  27. package/dist/engine/perp-instructions.test.d.ts +1 -0
  28. package/dist/engine/perp-instructions.test.js +292 -0
  29. package/dist/engine/spot-instructions.d.ts +52 -0
  30. package/dist/engine/spot-instructions.js +399 -0
  31. package/dist/engine/spot-instructions.test.d.ts +1 -0
  32. package/dist/engine/spot-instructions.test.js +221 -0
  33. package/dist/engine/utils.d.ts +23 -0
  34. package/dist/engine/utils.js +332 -0
  35. package/dist/engine/utils.test.d.ts +1 -0
  36. package/dist/engine/utils.test.js +120 -0
  37. package/dist/index.d.ts +6 -247
  38. package/dist/index.js +14 -2923
  39. package/dist/instruction_models.d.ts +10 -9
  40. package/dist/instruction_models.js +88 -69
  41. package/dist/logs_models.d.ts +147 -5
  42. package/dist/logs_models.js +243 -13
  43. package/dist/structure_models.d.ts +104 -99
  44. package/dist/structure_models.js +152 -129
  45. package/dist/types/engine-args.d.ts +32 -0
  46. package/dist/types/engine-args.js +2 -0
  47. package/dist/types/enums.d.ts +43 -0
  48. package/dist/{types.js → types/enums.js} +3 -5
  49. package/dist/types/index.d.ts +8 -0
  50. package/dist/types/index.js +38 -0
  51. package/dist/types/log-message.d.ts +2 -0
  52. package/dist/types/log-message.js +2 -0
  53. package/dist/types/responses.d.ts +248 -0
  54. package/dist/types/responses.js +2 -0
  55. package/dist/types/schemas.d.ts +168 -0
  56. package/dist/types/schemas.js +239 -0
  57. package/dist/types/schemas.test.d.ts +1 -0
  58. package/dist/types/schemas.test.js +93 -0
  59. package/dist/utils.d.ts +0 -0
  60. package/dist/utils.js +1 -0
  61. package/package.json +26 -6
  62. package/dist/types.d.ts +0 -565
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const vitest_1 = require("vitest");
13
+ const kit_1 = require("@solana/kit");
14
+ const context_builders_1 = require("./context-builders");
15
+ const structure_models_1 = require("../structure_models");
16
+ // Mock context for testing
17
+ function createMockContext() {
18
+ return {
19
+ rpc: {},
20
+ programId: 'DRVSvY68xD69Zwwgj9N8hRBu2eXvEzy8eejiVLNYGLti',
21
+ version: 1,
22
+ commitment: 'confirmed',
23
+ drvsAuthority: 'DRVStQsAKhF8gpz1xLzWyk2Q1HKKF3g21tknXtHpVLab',
24
+ };
25
+ }
26
+ // Create a mock instrument header
27
+ function createMockInstrHeader(overrides = {}) {
28
+ const header = new structure_models_1.InstrAccountHeaderModel();
29
+ header.instrId = 1;
30
+ header.assetTokenId = 1;
31
+ header.crncyTokenId = 0;
32
+ header.mapsAddress = '11111111111111111111111111111111';
33
+ header.perpMapsAddress = '22222222222222222222222222222222';
34
+ Object.assign(header, overrides);
35
+ return header;
36
+ }
37
+ (0, vitest_1.describe)('context-builders', () => {
38
+ (0, vitest_1.describe)('getSpotContext', () => {
39
+ (0, vitest_1.it)('returns array of account metas', () => __awaiter(void 0, void 0, void 0, function* () {
40
+ const ctx = createMockContext();
41
+ const header = createMockInstrHeader();
42
+ const accounts = yield (0, context_builders_1.getSpotContext)(ctx, header);
43
+ (0, vitest_1.expect)(Array.isArray(accounts)).toBe(true);
44
+ (0, vitest_1.expect)(accounts.length).toBe(9); // INSTR + BIDS_TREE + ASKS_TREE + BID_ORDERS + ASK_ORDERS + LINES + MAPS + CLIENT_INFOS + CLIENT_INFOS2
45
+ }));
46
+ (0, vitest_1.it)('all accounts are writable', () => __awaiter(void 0, void 0, void 0, function* () {
47
+ const ctx = createMockContext();
48
+ const header = createMockInstrHeader();
49
+ const accounts = yield (0, context_builders_1.getSpotContext)(ctx, header);
50
+ accounts.forEach((account) => {
51
+ (0, vitest_1.expect)(account.role).toBe(kit_1.AccountRole.WRITABLE);
52
+ });
53
+ }));
54
+ (0, vitest_1.it)('includes mapsAddress from header', () => __awaiter(void 0, void 0, void 0, function* () {
55
+ const ctx = createMockContext();
56
+ const mapsAddress = 'TestMapsAddress111111111111111111';
57
+ const header = createMockInstrHeader({ mapsAddress });
58
+ const accounts = yield (0, context_builders_1.getSpotContext)(ctx, header);
59
+ // mapsAddress should be at index 6 (7th element)
60
+ (0, vitest_1.expect)(accounts[6].address).toBe(mapsAddress);
61
+ }));
62
+ (0, vitest_1.it)('returns consistent accounts for same inputs', () => __awaiter(void 0, void 0, void 0, function* () {
63
+ const ctx = createMockContext();
64
+ const header = createMockInstrHeader();
65
+ const accounts1 = yield (0, context_builders_1.getSpotContext)(ctx, header);
66
+ const accounts2 = yield (0, context_builders_1.getSpotContext)(ctx, header);
67
+ (0, vitest_1.expect)(accounts1.length).toBe(accounts2.length);
68
+ for (let i = 0; i < accounts1.length; i++) {
69
+ (0, vitest_1.expect)(accounts1[i].address).toBe(accounts2[i].address);
70
+ (0, vitest_1.expect)(accounts1[i].role).toBe(accounts2[i].role);
71
+ }
72
+ }));
73
+ (0, vitest_1.it)('returns different accounts for different token pairs', () => __awaiter(void 0, void 0, void 0, function* () {
74
+ const ctx = createMockContext();
75
+ const header1 = createMockInstrHeader({ assetTokenId: 1, crncyTokenId: 0 });
76
+ const header2 = createMockInstrHeader({ assetTokenId: 2, crncyTokenId: 0 });
77
+ const accounts1 = yield (0, context_builders_1.getSpotContext)(ctx, header1);
78
+ const accounts2 = yield (0, context_builders_1.getSpotContext)(ctx, header2);
79
+ // INSTR address should be different
80
+ (0, vitest_1.expect)(accounts1[0].address).not.toBe(accounts2[0].address);
81
+ }));
82
+ });
83
+ (0, vitest_1.describe)('getPerpContext', () => {
84
+ (0, vitest_1.it)('returns array of account metas', () => __awaiter(void 0, void 0, void 0, function* () {
85
+ const ctx = createMockContext();
86
+ const header = createMockInstrHeader();
87
+ const accounts = yield (0, context_builders_1.getPerpContext)(ctx, header);
88
+ (0, vitest_1.expect)(Array.isArray(accounts)).toBe(true);
89
+ // INSTR + BIDS_TREE + ASKS_TREE + BID_ORDERS + ASK_ORDERS + LINES + PERP_MAPS +
90
+ // CLIENT_INFOS + CLIENT_INFOS2 + CLIENT_INFOS3 + CLIENT_INFOS4 + CLIENT_INFOS5 +
91
+ // LONG_PX_TREE + SHORT_PX_TREE + REBALANCE_TIME_TREE
92
+ (0, vitest_1.expect)(accounts.length).toBe(15);
93
+ }));
94
+ (0, vitest_1.it)('all accounts are writable', () => __awaiter(void 0, void 0, void 0, function* () {
95
+ const ctx = createMockContext();
96
+ const header = createMockInstrHeader();
97
+ const accounts = yield (0, context_builders_1.getPerpContext)(ctx, header);
98
+ accounts.forEach((account) => {
99
+ (0, vitest_1.expect)(account.role).toBe(kit_1.AccountRole.WRITABLE);
100
+ });
101
+ }));
102
+ (0, vitest_1.it)('includes perpMapsAddress from header', () => __awaiter(void 0, void 0, void 0, function* () {
103
+ const ctx = createMockContext();
104
+ const perpMapsAddress = 'PerpMapsAddress11111111111111111';
105
+ const header = createMockInstrHeader({ perpMapsAddress });
106
+ const accounts = yield (0, context_builders_1.getPerpContext)(ctx, header);
107
+ // perpMapsAddress should be at index 6 (7th element)
108
+ (0, vitest_1.expect)(accounts[6].address).toBe(perpMapsAddress);
109
+ }));
110
+ (0, vitest_1.it)('has more accounts than spot context', () => __awaiter(void 0, void 0, void 0, function* () {
111
+ const ctx = createMockContext();
112
+ const header = createMockInstrHeader();
113
+ const spotAccounts = yield (0, context_builders_1.getSpotContext)(ctx, header);
114
+ const perpAccounts = yield (0, context_builders_1.getPerpContext)(ctx, header);
115
+ (0, vitest_1.expect)(perpAccounts.length).toBeGreaterThan(spotAccounts.length);
116
+ }));
117
+ });
118
+ (0, vitest_1.describe)('getSpotCandles', () => {
119
+ (0, vitest_1.it)('returns array of 3 candle accounts', () => __awaiter(void 0, void 0, void 0, function* () {
120
+ const ctx = createMockContext();
121
+ const header = createMockInstrHeader();
122
+ const accounts = yield (0, context_builders_1.getSpotCandles)(ctx, header);
123
+ (0, vitest_1.expect)(Array.isArray(accounts)).toBe(true);
124
+ (0, vitest_1.expect)(accounts.length).toBe(3); // 1M, 15M, DAY candles
125
+ }));
126
+ (0, vitest_1.it)('all candle accounts are writable', () => __awaiter(void 0, void 0, void 0, function* () {
127
+ const ctx = createMockContext();
128
+ const header = createMockInstrHeader();
129
+ const accounts = yield (0, context_builders_1.getSpotCandles)(ctx, header);
130
+ accounts.forEach((account) => {
131
+ (0, vitest_1.expect)(account.role).toBe(kit_1.AccountRole.WRITABLE);
132
+ });
133
+ }));
134
+ (0, vitest_1.it)('returns consistent accounts for same inputs', () => __awaiter(void 0, void 0, void 0, function* () {
135
+ const ctx = createMockContext();
136
+ const header = createMockInstrHeader();
137
+ const accounts1 = yield (0, context_builders_1.getSpotCandles)(ctx, header);
138
+ const accounts2 = yield (0, context_builders_1.getSpotCandles)(ctx, header);
139
+ (0, vitest_1.expect)(accounts1.length).toBe(accounts2.length);
140
+ for (let i = 0; i < accounts1.length; i++) {
141
+ (0, vitest_1.expect)(accounts1[i].address).toBe(accounts2[i].address);
142
+ }
143
+ }));
144
+ (0, vitest_1.it)('returns different accounts for different token pairs', () => __awaiter(void 0, void 0, void 0, function* () {
145
+ const ctx = createMockContext();
146
+ const header1 = createMockInstrHeader({ assetTokenId: 1, crncyTokenId: 0 });
147
+ const header2 = createMockInstrHeader({ assetTokenId: 2, crncyTokenId: 0 });
148
+ const accounts1 = yield (0, context_builders_1.getSpotCandles)(ctx, header1);
149
+ const accounts2 = yield (0, context_builders_1.getSpotCandles)(ctx, header2);
150
+ // All candle addresses should be different
151
+ (0, vitest_1.expect)(accounts1[0].address).not.toBe(accounts2[0].address);
152
+ (0, vitest_1.expect)(accounts1[1].address).not.toBe(accounts2[1].address);
153
+ (0, vitest_1.expect)(accounts1[2].address).not.toBe(accounts2[2].address);
154
+ }));
155
+ });
156
+ });
@@ -0,0 +1,101 @@
1
+ import { Address as SolanaAddress, SolanaRpcApiDevnet, SolanaRpcApiMainnet, Base64EncodedDataResponse, Rpc, Commitment } from '@solana/kit';
2
+ import { Instrument, CommunityData, GetClientSpotOrdersInfoResponse, GetClientSpotOrdersArgs, GetClientSpotOrdersResponse, GetClientPerpOrdersInfoResponse, GetClientPerpOrdersArgs, GetClientPerpOrdersResponse, GetClientDataResponse, GetClientSpotOrdersInfoArgs, GetClientPerpOrdersInfoArgs, getInstrAccountByTagArgs, SpotLpArgs, NewSpotOrderArgs, DepositArgs, WithdrawArgs, SpotQuotesReplaceArgs, SpotOrderCancelArgs, SpotMassCancelArgs, InstrId, PerpDepositArgs, NewPerpOrderArgs, PerpQuotesReplaceArgs, PerpOrderCancelArgs, PerpMassCancelArgs, PerpChangeLeverageArgs, PerpStatisticsResetArgs, NewInstrumentArgs, PerpBuySeatArgs, SwapArgs, PerpSellSeatArgs, LogMessage, AccountMeta, Instruction } from '../types';
3
+ import { InstrAccountHeaderModel, RootStateModel, TokenStateModel } from '../structure_models';
4
+ type Address = SolanaAddress<string>;
5
+ /**
6
+ * Main class to operate with Deriverse
7
+ * @property {number} originalClientId Deriverse main client ID
8
+ * @property {AddressLookupTableAccount} lut Root address lookup table account
9
+ * @property {AddressLookupTableAccount} clientLut Client address lookup table account
10
+ * @property {Map<number, Token>} tokens Tokens data
11
+ * @property {Map<number, Instrument>} instruments Instruments data
12
+ */
13
+ export declare class Engine {
14
+ programId: Address;
15
+ rootAccount: Address;
16
+ communityAccount: Address;
17
+ commitment: Commitment;
18
+ version: number;
19
+ rootStateModel: RootStateModel;
20
+ community: CommunityData;
21
+ tokens: Map<number, TokenStateModel>;
22
+ instruments: Map<number, Instrument>;
23
+ originalClientId: number | null;
24
+ clientLutAddress: Address | null;
25
+ privateMode: boolean;
26
+ private rpc;
27
+ private drvsAuthority;
28
+ private signer;
29
+ private clientPrimaryAccount;
30
+ private clientCommunityAccount;
31
+ private refClientPrimaryAccount;
32
+ private refClientCommunityAccount;
33
+ private uiNumbers;
34
+ /**
35
+ * @param rpc @solana/kit rpc
36
+ */
37
+ constructor(rpc: Rpc<SolanaRpcApiDevnet> | Rpc<SolanaRpcApiMainnet>, args?: {
38
+ programId?: Address;
39
+ version?: number;
40
+ commitment?: Commitment;
41
+ uiNumbers?: boolean;
42
+ });
43
+ private getAccountHelperContext;
44
+ private getSpotInstructionContext;
45
+ private getPerpInstructionContext;
46
+ private getClientQueryContext;
47
+ private requireClient;
48
+ private requireInstrument;
49
+ private getSpotInstrumentWithUpdate;
50
+ private getPerpInstrumentWithUpdate;
51
+ private checkClient;
52
+ logsDecode(data: readonly string[]): LogMessage[];
53
+ initialize(): Promise<boolean>;
54
+ addToken(tokenAccount: Address): Promise<void>;
55
+ addInstr(instrAccount: Address): Promise<void>;
56
+ setSigner(signer: Address): Promise<void>;
57
+ updateCommunityFromBuffer(data: Base64EncodedDataResponse): void;
58
+ updateCommunity(): Promise<void>;
59
+ updateRootFromBuffer(data: Base64EncodedDataResponse): void;
60
+ updateRoot(): Promise<void>;
61
+ getInstrAccountByTag(args: getInstrAccountByTagArgs): Promise<Address>;
62
+ getAccountByTag(tag: number): Promise<Address>;
63
+ getTokenAccount(mint: Address): Promise<Address>;
64
+ getTokenId(mint: Address): Promise<number | null>;
65
+ getInstrId(args: {
66
+ assetTokenId: number;
67
+ crncyTokenId: number;
68
+ }): Promise<number | null>;
69
+ instrLut(args: InstrId): Address;
70
+ updateInstrData(args: InstrId): Promise<void>;
71
+ updateInstrDataFromBuffer(data: Base64EncodedDataResponse): Promise<void>;
72
+ getSpotContext(instrAccountHeaderModel: InstrAccountHeaderModel): Promise<AccountMeta[]>;
73
+ getPerpContext(instrAccountHeaderModel: InstrAccountHeaderModel): Promise<AccountMeta[]>;
74
+ getSpotCandles(instrAccountHeaderModel: InstrAccountHeaderModel): Promise<AccountMeta[]>;
75
+ getClientData(): Promise<GetClientDataResponse>;
76
+ getClientSpotOrdersInfo(args: GetClientSpotOrdersInfoArgs): Promise<GetClientSpotOrdersInfoResponse>;
77
+ getClientPerpOrdersInfo(args: GetClientPerpOrdersInfoArgs): Promise<GetClientPerpOrdersInfoResponse>;
78
+ getClientSpotOrders(args: GetClientSpotOrdersArgs): Promise<GetClientSpotOrdersResponse>;
79
+ getClientPerpOrders(args: GetClientPerpOrdersArgs): Promise<GetClientPerpOrdersResponse>;
80
+ depositInstruction(args: DepositArgs): Promise<Instruction>;
81
+ withdrawInstruction(args: WithdrawArgs): Promise<Instruction>;
82
+ spotLpInstruction(args: SpotLpArgs): Promise<Instruction>;
83
+ newSpotOrderInstruction(args: NewSpotOrderArgs): Promise<Instruction>;
84
+ spotQuotesReplaceInstruction(args: SpotQuotesReplaceArgs): Promise<Instruction>;
85
+ spotOrderCancelInstruction(args: SpotOrderCancelArgs): Promise<Instruction>;
86
+ spotMassCancelInstruction(args: SpotMassCancelArgs): Promise<Instruction>;
87
+ swapInstruction(args: SwapArgs): Promise<Instruction>;
88
+ upgradeToPerpInstructions(args: InstrId): Promise<Instruction[]>;
89
+ perpDepositInstruction(args: PerpDepositArgs): Promise<Instruction>;
90
+ perpBuySeatInstruction(args: PerpBuySeatArgs): Promise<Instruction>;
91
+ perpSellSeatInstruction(args: PerpSellSeatArgs): Promise<Instruction>;
92
+ newPerpOrderInstruction(args: NewPerpOrderArgs): Promise<Instruction>;
93
+ perpQuotesReplaceInstruction(args: PerpQuotesReplaceArgs): Promise<Instruction>;
94
+ perpOrderCancelInstruction(args: PerpOrderCancelArgs): Promise<Instruction>;
95
+ perpMassCancelInstruction(args: PerpMassCancelArgs): Promise<Instruction>;
96
+ newRefLinkInstruction(): Promise<Instruction>;
97
+ perpChangeLeverageInstruction(args: PerpChangeLeverageArgs): Promise<Instruction>;
98
+ perpStatisticsResetInstruction(args: PerpStatisticsResetArgs): Promise<Instruction>;
99
+ newInstrumentInstructions(args: NewInstrumentArgs): Promise<Instruction[]>;
100
+ }
101
+ export {};