@deriverse/kit 1.0.39 → 1.0.41
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/auto_buffer.d.ts +0 -2
- package/dist/auto_data.d.ts +0 -2
- package/dist/constants.d.ts +12 -0
- package/dist/constants.js +26 -0
- package/dist/engine/account-helpers.d.ts +59 -0
- package/dist/engine/account-helpers.js +177 -0
- package/dist/engine/account-helpers.test.d.ts +1 -0
- package/dist/engine/account-helpers.test.js +199 -0
- package/dist/engine/client-queries.d.ts +36 -0
- package/dist/engine/client-queries.js +498 -0
- package/dist/engine/client-queries.test.d.ts +1 -0
- package/dist/engine/client-queries.test.js +341 -0
- package/dist/engine/context-builders.d.ts +16 -0
- package/dist/engine/context-builders.js +158 -0
- package/dist/engine/context-builders.test.d.ts +1 -0
- package/dist/engine/context-builders.test.js +156 -0
- package/dist/engine/index.d.ts +101 -0
- package/dist/engine/index.js +745 -0
- package/dist/engine/index.test.d.ts +1 -0
- package/dist/engine/index.test.js +663 -0
- package/dist/engine/logs-decoder.d.ts +18 -0
- package/dist/engine/logs-decoder.js +414 -0
- package/dist/engine/logs-decoder.test.d.ts +1 -0
- package/dist/engine/logs-decoder.test.js +836 -0
- package/dist/engine/perp-instructions.d.ts +68 -0
- package/dist/engine/perp-instructions.js +478 -0
- package/dist/engine/perp-instructions.test.d.ts +1 -0
- package/dist/engine/perp-instructions.test.js +296 -0
- package/dist/engine/spot-instructions.d.ts +52 -0
- package/dist/engine/spot-instructions.js +376 -0
- package/dist/engine/spot-instructions.test.d.ts +1 -0
- package/dist/engine/spot-instructions.test.js +221 -0
- package/dist/engine/utils.d.ts +23 -0
- package/dist/engine/utils.js +329 -0
- package/dist/engine/utils.test.d.ts +1 -0
- package/dist/engine/utils.test.js +120 -0
- package/dist/index.d.ts +6 -247
- package/dist/index.js +14 -2923
- package/dist/instruction_models.d.ts +0 -2
- package/dist/instruction_models.js +39 -40
- package/dist/logs_models.d.ts +0 -2
- package/dist/types/engine-args.d.ts +32 -0
- package/dist/types/engine-args.js +2 -0
- package/dist/types/enums.d.ts +43 -0
- package/dist/{types.js → types/enums.js} +3 -5
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.js +38 -0
- package/dist/types/log-message.d.ts +2 -0
- package/dist/types/log-message.js +2 -0
- package/dist/types/responses.d.ts +248 -0
- package/dist/types/responses.js +2 -0
- package/dist/types/schemas.d.ts +165 -0
- package/dist/types/schemas.js +254 -0
- package/dist/types/schemas.test.d.ts +1 -0
- package/dist/types/schemas.test.js +94 -0
- package/dist/utils.d.ts +0 -0
- package/dist/utils.js +1 -0
- package/package.json +26 -6
- 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 {};
|