@haven-fi/solauto-sdk 1.0.176 → 1.0.178

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. package/dist/constants/generalAccounts.d.ts.map +1 -1
  2. package/dist/constants/generalAccounts.js +0 -1
  3. package/dist/constants/solautoConstants.d.ts +0 -1
  4. package/dist/constants/solautoConstants.d.ts.map +1 -1
  5. package/dist/constants/solautoConstants.js +3 -3
  6. package/dist/generated/errors/solauto.d.ts +8 -26
  7. package/dist/generated/errors/solauto.d.ts.map +1 -1
  8. package/dist/generated/errors/solauto.js +26 -59
  9. package/dist/index.js +2 -0
  10. package/dist/jupiter-sdk/errors/index.d.ts +9 -0
  11. package/dist/jupiter-sdk/errors/index.d.ts.map +1 -0
  12. package/dist/jupiter-sdk/errors/index.js +24 -0
  13. package/dist/jupiter-sdk/errors/jupiter.d.ts +127 -0
  14. package/dist/jupiter-sdk/errors/jupiter.d.ts.map +1 -0
  15. package/dist/jupiter-sdk/errors/jupiter.js +229 -0
  16. package/dist/jupiter-sdk/index.d.ts +10 -0
  17. package/dist/jupiter-sdk/index.d.ts.map +1 -0
  18. package/dist/jupiter-sdk/index.js +25 -0
  19. package/dist/jupiter-sdk/programs/index.d.ts +9 -0
  20. package/dist/jupiter-sdk/programs/index.d.ts.map +1 -0
  21. package/dist/jupiter-sdk/programs/index.js +24 -0
  22. package/dist/jupiter-sdk/programs/jupiter.d.ts +13 -0
  23. package/dist/jupiter-sdk/programs/jupiter.d.ts.map +1 -0
  24. package/dist/jupiter-sdk/programs/jupiter.js +36 -0
  25. package/dist/transactions/transactionUtils.d.ts +5 -0
  26. package/dist/transactions/transactionUtils.d.ts.map +1 -1
  27. package/dist/transactions/transactionUtils.js +46 -4
  28. package/dist/transactions/transactionsManager.d.ts +2 -1
  29. package/dist/transactions/transactionsManager.d.ts.map +1 -1
  30. package/dist/transactions/transactionsManager.js +12 -20
  31. package/package.json +1 -1
  32. package/src/constants/generalAccounts.ts +0 -3
  33. package/src/constants/solautoConstants.ts +1 -2
  34. package/src/generated/errors/solauto.ts +30 -88
  35. package/src/index.ts +3 -1
  36. package/src/jupiter-sdk/errors/index.ts +9 -0
  37. package/src/jupiter-sdk/errors/jupiter.ts +282 -0
  38. package/src/jupiter-sdk/index.ts +10 -0
  39. package/src/jupiter-sdk/programs/index.ts +9 -0
  40. package/src/jupiter-sdk/programs/jupiter.ts +52 -0
  41. package/src/transactions/transactionUtils.ts +72 -5
  42. package/src/transactions/transactionsManager.ts +26 -29
@@ -0,0 +1,229 @@
1
+ "use strict";
2
+ /**
3
+ * This code was AUTOGENERATED using the kinobi library.
4
+ * Please DO NOT EDIT THIS FILE, instead use visitors
5
+ * to add features, then rerun kinobi to update it.
6
+ *
7
+ * @see https://github.com/metaplex-foundation/kinobi
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.ExactOutAmountNotMatchedError = exports.SwapNotSupportedError = exports.TokenProgramNotProvidedError = exports.IncorrectTokenProgramIDError = exports.InvalidTokenLedgerError = exports.LedgerTokenAccountDoesNotMatchError = exports.InvalidReferralAuthorityError = exports.InvalidRoutePlanError = exports.NonZeroMinimumOutAmountNotSupportedError = exports.NotEnoughAccountKeysError = exports.InvalidOutputIndexError = exports.InvalidInputIndexError = exports.NotEnoughPercentError = exports.InvalidSlippageError = exports.MissingPlatformFeeAccountError = exports.InvalidCalculationError = exports.SlippageToleranceExceededError = exports.EmptyRouteError = void 0;
11
+ exports.getJupiterErrorFromCode = getJupiterErrorFromCode;
12
+ exports.getJupiterErrorFromName = getJupiterErrorFromName;
13
+ const umi_1 = require("@metaplex-foundation/umi");
14
+ const codeToErrorMap = new Map();
15
+ const nameToErrorMap = new Map();
16
+ /** EmptyRoute: Empty route */
17
+ class EmptyRouteError extends umi_1.ProgramError {
18
+ constructor(program, cause) {
19
+ super('Empty route', program, cause);
20
+ this.name = 'EmptyRoute';
21
+ this.code = 0x1770; // 6000
22
+ }
23
+ }
24
+ exports.EmptyRouteError = EmptyRouteError;
25
+ codeToErrorMap.set(0x1770, EmptyRouteError);
26
+ nameToErrorMap.set('EmptyRoute', EmptyRouteError);
27
+ /** SlippageToleranceExceeded: Slippage tolerance exceeded */
28
+ class SlippageToleranceExceededError extends umi_1.ProgramError {
29
+ constructor(program, cause) {
30
+ super('Slippage tolerance exceeded', program, cause);
31
+ this.name = 'SlippageToleranceExceeded';
32
+ this.code = 0x1771; // 6001
33
+ }
34
+ }
35
+ exports.SlippageToleranceExceededError = SlippageToleranceExceededError;
36
+ codeToErrorMap.set(0x1771, SlippageToleranceExceededError);
37
+ nameToErrorMap.set('SlippageToleranceExceeded', SlippageToleranceExceededError);
38
+ /** InvalidCalculation: Invalid calculation */
39
+ class InvalidCalculationError extends umi_1.ProgramError {
40
+ constructor(program, cause) {
41
+ super('Invalid calculation', program, cause);
42
+ this.name = 'InvalidCalculation';
43
+ this.code = 0x1772; // 6002
44
+ }
45
+ }
46
+ exports.InvalidCalculationError = InvalidCalculationError;
47
+ codeToErrorMap.set(0x1772, InvalidCalculationError);
48
+ nameToErrorMap.set('InvalidCalculation', InvalidCalculationError);
49
+ /** MissingPlatformFeeAccount: Missing platform fee account */
50
+ class MissingPlatformFeeAccountError extends umi_1.ProgramError {
51
+ constructor(program, cause) {
52
+ super('Missing platform fee account', program, cause);
53
+ this.name = 'MissingPlatformFeeAccount';
54
+ this.code = 0x1773; // 6003
55
+ }
56
+ }
57
+ exports.MissingPlatformFeeAccountError = MissingPlatformFeeAccountError;
58
+ codeToErrorMap.set(0x1773, MissingPlatformFeeAccountError);
59
+ nameToErrorMap.set('MissingPlatformFeeAccount', MissingPlatformFeeAccountError);
60
+ /** InvalidSlippage: Invalid slippage */
61
+ class InvalidSlippageError extends umi_1.ProgramError {
62
+ constructor(program, cause) {
63
+ super('Invalid slippage', program, cause);
64
+ this.name = 'InvalidSlippage';
65
+ this.code = 0x1774; // 6004
66
+ }
67
+ }
68
+ exports.InvalidSlippageError = InvalidSlippageError;
69
+ codeToErrorMap.set(0x1774, InvalidSlippageError);
70
+ nameToErrorMap.set('InvalidSlippage', InvalidSlippageError);
71
+ /** NotEnoughPercent: Not enough percent to 100 */
72
+ class NotEnoughPercentError extends umi_1.ProgramError {
73
+ constructor(program, cause) {
74
+ super('Not enough percent to 100', program, cause);
75
+ this.name = 'NotEnoughPercent';
76
+ this.code = 0x1775; // 6005
77
+ }
78
+ }
79
+ exports.NotEnoughPercentError = NotEnoughPercentError;
80
+ codeToErrorMap.set(0x1775, NotEnoughPercentError);
81
+ nameToErrorMap.set('NotEnoughPercent', NotEnoughPercentError);
82
+ /** InvalidInputIndex: Token input index is invalid */
83
+ class InvalidInputIndexError extends umi_1.ProgramError {
84
+ constructor(program, cause) {
85
+ super('Token input index is invalid', program, cause);
86
+ this.name = 'InvalidInputIndex';
87
+ this.code = 0x1776; // 6006
88
+ }
89
+ }
90
+ exports.InvalidInputIndexError = InvalidInputIndexError;
91
+ codeToErrorMap.set(0x1776, InvalidInputIndexError);
92
+ nameToErrorMap.set('InvalidInputIndex', InvalidInputIndexError);
93
+ /** InvalidOutputIndex: Token output index is invalid */
94
+ class InvalidOutputIndexError extends umi_1.ProgramError {
95
+ constructor(program, cause) {
96
+ super('Token output index is invalid', program, cause);
97
+ this.name = 'InvalidOutputIndex';
98
+ this.code = 0x1777; // 6007
99
+ }
100
+ }
101
+ exports.InvalidOutputIndexError = InvalidOutputIndexError;
102
+ codeToErrorMap.set(0x1777, InvalidOutputIndexError);
103
+ nameToErrorMap.set('InvalidOutputIndex', InvalidOutputIndexError);
104
+ /** NotEnoughAccountKeys: Not Enough Account keys */
105
+ class NotEnoughAccountKeysError extends umi_1.ProgramError {
106
+ constructor(program, cause) {
107
+ super('Not Enough Account keys', program, cause);
108
+ this.name = 'NotEnoughAccountKeys';
109
+ this.code = 0x1778; // 6008
110
+ }
111
+ }
112
+ exports.NotEnoughAccountKeysError = NotEnoughAccountKeysError;
113
+ codeToErrorMap.set(0x1778, NotEnoughAccountKeysError);
114
+ nameToErrorMap.set('NotEnoughAccountKeys', NotEnoughAccountKeysError);
115
+ /** NonZeroMinimumOutAmountNotSupported: Non zero minimum out amount not supported */
116
+ class NonZeroMinimumOutAmountNotSupportedError extends umi_1.ProgramError {
117
+ constructor(program, cause) {
118
+ super('Non zero minimum out amount not supported', program, cause);
119
+ this.name = 'NonZeroMinimumOutAmountNotSupported';
120
+ this.code = 0x1779; // 6009
121
+ }
122
+ }
123
+ exports.NonZeroMinimumOutAmountNotSupportedError = NonZeroMinimumOutAmountNotSupportedError;
124
+ codeToErrorMap.set(0x1779, NonZeroMinimumOutAmountNotSupportedError);
125
+ nameToErrorMap.set('NonZeroMinimumOutAmountNotSupported', NonZeroMinimumOutAmountNotSupportedError);
126
+ /** InvalidRoutePlan: Invalid route plan */
127
+ class InvalidRoutePlanError extends umi_1.ProgramError {
128
+ constructor(program, cause) {
129
+ super('Invalid route plan', program, cause);
130
+ this.name = 'InvalidRoutePlan';
131
+ this.code = 0x177a; // 6010
132
+ }
133
+ }
134
+ exports.InvalidRoutePlanError = InvalidRoutePlanError;
135
+ codeToErrorMap.set(0x177a, InvalidRoutePlanError);
136
+ nameToErrorMap.set('InvalidRoutePlan', InvalidRoutePlanError);
137
+ /** InvalidReferralAuthority: Invalid referral authority */
138
+ class InvalidReferralAuthorityError extends umi_1.ProgramError {
139
+ constructor(program, cause) {
140
+ super('Invalid referral authority', program, cause);
141
+ this.name = 'InvalidReferralAuthority';
142
+ this.code = 0x177b; // 6011
143
+ }
144
+ }
145
+ exports.InvalidReferralAuthorityError = InvalidReferralAuthorityError;
146
+ codeToErrorMap.set(0x177b, InvalidReferralAuthorityError);
147
+ nameToErrorMap.set('InvalidReferralAuthority', InvalidReferralAuthorityError);
148
+ /** LedgerTokenAccountDoesNotMatch: Token account doesn't match the ledger */
149
+ class LedgerTokenAccountDoesNotMatchError extends umi_1.ProgramError {
150
+ constructor(program, cause) {
151
+ super("Token account doesn't match the ledger", program, cause);
152
+ this.name = 'LedgerTokenAccountDoesNotMatch';
153
+ this.code = 0x177c; // 6012
154
+ }
155
+ }
156
+ exports.LedgerTokenAccountDoesNotMatchError = LedgerTokenAccountDoesNotMatchError;
157
+ codeToErrorMap.set(0x177c, LedgerTokenAccountDoesNotMatchError);
158
+ nameToErrorMap.set('LedgerTokenAccountDoesNotMatch', LedgerTokenAccountDoesNotMatchError);
159
+ /** InvalidTokenLedger: Invalid token ledger */
160
+ class InvalidTokenLedgerError extends umi_1.ProgramError {
161
+ constructor(program, cause) {
162
+ super('Invalid token ledger', program, cause);
163
+ this.name = 'InvalidTokenLedger';
164
+ this.code = 0x177d; // 6013
165
+ }
166
+ }
167
+ exports.InvalidTokenLedgerError = InvalidTokenLedgerError;
168
+ codeToErrorMap.set(0x177d, InvalidTokenLedgerError);
169
+ nameToErrorMap.set('InvalidTokenLedger', InvalidTokenLedgerError);
170
+ /** IncorrectTokenProgramID: Token program ID is invalid */
171
+ class IncorrectTokenProgramIDError extends umi_1.ProgramError {
172
+ constructor(program, cause) {
173
+ super('Token program ID is invalid', program, cause);
174
+ this.name = 'IncorrectTokenProgramID';
175
+ this.code = 0x177e; // 6014
176
+ }
177
+ }
178
+ exports.IncorrectTokenProgramIDError = IncorrectTokenProgramIDError;
179
+ codeToErrorMap.set(0x177e, IncorrectTokenProgramIDError);
180
+ nameToErrorMap.set('IncorrectTokenProgramID', IncorrectTokenProgramIDError);
181
+ /** TokenProgramNotProvided: Token program not provided */
182
+ class TokenProgramNotProvidedError extends umi_1.ProgramError {
183
+ constructor(program, cause) {
184
+ super('Token program not provided', program, cause);
185
+ this.name = 'TokenProgramNotProvided';
186
+ this.code = 0x177f; // 6015
187
+ }
188
+ }
189
+ exports.TokenProgramNotProvidedError = TokenProgramNotProvidedError;
190
+ codeToErrorMap.set(0x177f, TokenProgramNotProvidedError);
191
+ nameToErrorMap.set('TokenProgramNotProvided', TokenProgramNotProvidedError);
192
+ /** SwapNotSupported: Swap not supported */
193
+ class SwapNotSupportedError extends umi_1.ProgramError {
194
+ constructor(program, cause) {
195
+ super('Swap not supported', program, cause);
196
+ this.name = 'SwapNotSupported';
197
+ this.code = 0x1780; // 6016
198
+ }
199
+ }
200
+ exports.SwapNotSupportedError = SwapNotSupportedError;
201
+ codeToErrorMap.set(0x1780, SwapNotSupportedError);
202
+ nameToErrorMap.set('SwapNotSupported', SwapNotSupportedError);
203
+ /** ExactOutAmountNotMatched: Exact out amount doesn't match */
204
+ class ExactOutAmountNotMatchedError extends umi_1.ProgramError {
205
+ constructor(program, cause) {
206
+ super("Exact out amount doesn't match", program, cause);
207
+ this.name = 'ExactOutAmountNotMatched';
208
+ this.code = 0x1781; // 6017
209
+ }
210
+ }
211
+ exports.ExactOutAmountNotMatchedError = ExactOutAmountNotMatchedError;
212
+ codeToErrorMap.set(0x1781, ExactOutAmountNotMatchedError);
213
+ nameToErrorMap.set('ExactOutAmountNotMatched', ExactOutAmountNotMatchedError);
214
+ /**
215
+ * Attempts to resolve a custom program error from the provided error code.
216
+ * @category Errors
217
+ */
218
+ function getJupiterErrorFromCode(code, program, cause) {
219
+ const constructor = codeToErrorMap.get(code);
220
+ return constructor ? new constructor(program, cause) : null;
221
+ }
222
+ /**
223
+ * Attempts to resolve a custom program error from the provided error name, i.e. 'Unauthorized'.
224
+ * @category Errors
225
+ */
226
+ function getJupiterErrorFromName(name, program, cause) {
227
+ const constructor = nameToErrorMap.get(name);
228
+ return constructor ? new constructor(program, cause) : null;
229
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the kinobi library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun kinobi to update it.
5
+ *
6
+ * @see https://github.com/metaplex-foundation/kinobi
7
+ */
8
+ export * from './errors';
9
+ export * from './programs';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/jupiter-sdk/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ /**
3
+ * This code was AUTOGENERATED using the kinobi library.
4
+ * Please DO NOT EDIT THIS FILE, instead use visitors
5
+ * to add features, then rerun kinobi to update it.
6
+ *
7
+ * @see https://github.com/metaplex-foundation/kinobi
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
21
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ __exportStar(require("./errors"), exports);
25
+ __exportStar(require("./programs"), exports);
@@ -0,0 +1,9 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the kinobi library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun kinobi to update it.
5
+ *
6
+ * @see https://github.com/metaplex-foundation/kinobi
7
+ */
8
+ export * from './jupiter';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/jupiter-sdk/programs/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,WAAW,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * This code was AUTOGENERATED using the kinobi library.
4
+ * Please DO NOT EDIT THIS FILE, instead use visitors
5
+ * to add features, then rerun kinobi to update it.
6
+ *
7
+ * @see https://github.com/metaplex-foundation/kinobi
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
21
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
22
+ };
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ __exportStar(require("./jupiter"), exports);
@@ -0,0 +1,13 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the kinobi library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun kinobi to update it.
5
+ *
6
+ * @see https://github.com/metaplex-foundation/kinobi
7
+ */
8
+ import { ClusterFilter, Context, Program, PublicKey } from '@metaplex-foundation/umi';
9
+ export declare const JUPITER_PROGRAM_ID: PublicKey<"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4">;
10
+ export declare function createJupiterProgram(): Program;
11
+ export declare function getJupiterProgram<T extends Program = Program>(context: Pick<Context, 'programs'>, clusterFilter?: ClusterFilter): T;
12
+ export declare function getJupiterProgramId(context: Pick<Context, 'programs'>, clusterFilter?: ClusterFilter): PublicKey;
13
+ //# sourceMappingURL=jupiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jupiter.d.ts","sourceRoot":"","sources":["../../../src/jupiter-sdk/programs/jupiter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,aAAa,EACb,OAAO,EACP,OAAO,EACP,SAAS,EACV,MAAM,0BAA0B,CAAC;AAGlC,eAAO,MAAM,kBAAkB,EACoB,SAAS,CAAC,6CAA6C,CAAC,CAAC;AAE5G,wBAAgB,oBAAoB,IAAI,OAAO,CAc9C;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EAC3D,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAClC,aAAa,CAAC,EAAE,aAAa,GAC5B,CAAC,CAEH;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAClC,aAAa,CAAC,EAAE,aAAa,GAC5B,SAAS,CAMX"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ /**
3
+ * This code was AUTOGENERATED using the kinobi library.
4
+ * Please DO NOT EDIT THIS FILE, instead use visitors
5
+ * to add features, then rerun kinobi to update it.
6
+ *
7
+ * @see https://github.com/metaplex-foundation/kinobi
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.JUPITER_PROGRAM_ID = void 0;
11
+ exports.createJupiterProgram = createJupiterProgram;
12
+ exports.getJupiterProgram = getJupiterProgram;
13
+ exports.getJupiterProgramId = getJupiterProgramId;
14
+ const errors_1 = require("../errors");
15
+ exports.JUPITER_PROGRAM_ID = 'JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4';
16
+ function createJupiterProgram() {
17
+ return {
18
+ name: 'jupiter',
19
+ publicKey: exports.JUPITER_PROGRAM_ID,
20
+ getErrorFromCode(code, cause) {
21
+ return (0, errors_1.getJupiterErrorFromCode)(code, this, cause);
22
+ },
23
+ getErrorFromName(name, cause) {
24
+ return (0, errors_1.getJupiterErrorFromName)(name, this, cause);
25
+ },
26
+ isOnCluster() {
27
+ return true;
28
+ },
29
+ };
30
+ }
31
+ function getJupiterProgram(context, clusterFilter) {
32
+ return context.programs.get('jupiter', clusterFilter);
33
+ }
34
+ function getJupiterProgramId(context, clusterFilter) {
35
+ return context.programs.getPublicKey('jupiter', exports.JUPITER_PROGRAM_ID, clusterFilter);
36
+ }
@@ -10,4 +10,9 @@ export declare function buildSolautoRebalanceTransaction(client: SolautoClient,
10
10
  lookupTableAddresses: string[];
11
11
  } | undefined>;
12
12
  export declare function convertReferralFeesToDestination(umi: Umi, referralState: ReferralState, tokenAccount: PublicKey): Promise<[TransactionBuilder, string[]] | undefined>;
13
+ export declare function getErrorInfo(tx: TransactionBuilder, error: any): {
14
+ errorName: string;
15
+ errorInfo: string;
16
+ canBeIgnored: boolean;
17
+ };
13
18
  //# sourceMappingURL=transactionUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAKxE,OAAO,EAEL,aAAa,EAUd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAyNzD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CA+G7B;AAmLD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA0BnD;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,aAAa,WA6BnE;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CACN;IACE,EAAE,EAAE,kBAAkB,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC,GACD,SAAS,CACZ,CAwHA;AAED,wBAAsB,gCAAgC,CACpD,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,SAAS,GACtB,OAAO,CAAC,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,CAmCrD"}
1
+ {"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAKxE,OAAO,EAGL,aAAa,EAYd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAiOzD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CA+G7B;AAmLD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA0BnD;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,aAAa,WAwCnE;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CACN;IACE,EAAE,EAAE,kBAAkB,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC,GACD,SAAS,CACZ,CAwHA;AAED,wBAAsB,gCAAgC,CACpD,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,SAAS,GACtB,OAAO,CAAC,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC,CAmCrD;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG;;;;EA0C9D"}
@@ -5,6 +5,7 @@ exports.getTransactionChores = getTransactionChores;
5
5
  exports.requiresRefreshBeforeRebalance = requiresRefreshBeforeRebalance;
6
6
  exports.buildSolautoRebalanceTransaction = buildSolautoRebalanceTransaction;
7
7
  exports.convertReferralFeesToDestination = convertReferralFeesToDestination;
8
+ exports.getErrorInfo = getErrorInfo;
8
9
  const umi_1 = require("@metaplex-foundation/umi");
9
10
  const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
10
11
  const web3_js_1 = require("@solana/web3.js");
@@ -18,6 +19,7 @@ const numberUtils_1 = require("../utils/numberUtils");
18
19
  const generalUtils_2 = require("../utils/solauto/generalUtils");
19
20
  const accountUtils_1 = require("../utils/accountUtils");
20
21
  const marginfi_sdk_1 = require("../marginfi-sdk");
22
+ const jupiter_sdk_1 = require("../jupiter-sdk");
21
23
  function getWSolUsage(client, solautoActions, initiatingDcaIn, cancellingDcaIn) {
22
24
  const supplyIsWsol = client.supplyMint.equals(spl_token_1.NATIVE_MINT);
23
25
  const debtIsWsol = client.debtMint.equals(spl_token_1.NATIVE_MINT);
@@ -329,14 +331,18 @@ function requiresRefreshBeforeRebalance(client) {
329
331
  return true;
330
332
  }
331
333
  else if (client.solautoPositionData && !client.selfManaged) {
332
- if (client.livePositionUpdates.supplyAdjustment > BigInt(0) || client.livePositionUpdates.debtAdjustment > BigInt(0)) {
334
+ if (client.livePositionUpdates.supplyAdjustment > BigInt(0) ||
335
+ client.livePositionUpdates.debtAdjustment > BigInt(0)) {
333
336
  return false;
334
337
  }
335
338
  const oldSupply = client.solautoPositionData.state.supply.amountUsed.baseUnit;
336
339
  const oldDebt = client.solautoPositionData.state.debt.amountUsed.baseUnit;
337
- const supplyDiff = (client.solautoPositionState?.supply.amountUsed.baseUnit ?? BigInt(0)) - oldSupply;
338
- const debtDiff = (client.solautoPositionState?.debt.amountUsed.baseUnit ?? BigInt(0)) - oldDebt;
339
- if (Math.abs(Number(supplyDiff)) / Number(oldSupply) >= 0.01 || Math.abs(Number(debtDiff)) / Number(oldDebt) >= 0.01) {
340
+ const supplyDiff = (client.solautoPositionState?.supply.amountUsed.baseUnit ?? BigInt(0)) -
341
+ oldSupply;
342
+ const debtDiff = (client.solautoPositionState?.debt.amountUsed.baseUnit ?? BigInt(0)) -
343
+ oldDebt;
344
+ if (Math.abs(Number(supplyDiff)) / Number(oldSupply) >= 0.01 ||
345
+ Math.abs(Number(debtDiff)) / Number(oldDebt) >= 0.01) {
340
346
  return true;
341
347
  }
342
348
  }
@@ -421,3 +427,39 @@ async function convertReferralFeesToDestination(umi, referralState, tokenAccount
421
427
  .add(swapIx);
422
428
  return [tx, lookupTableAddresses];
423
429
  }
430
+ function getErrorInfo(tx, error) {
431
+ let canBeIgnored = false;
432
+ let errorName = undefined;
433
+ let errorInfo = undefined;
434
+ try {
435
+ let programError = null;
436
+ if (typeof error === "object" && error["InstructionError"]) {
437
+ const err = error["InstructionError"];
438
+ const errIx = tx.getInstructions()[Math.max(0, err[0] - 2)];
439
+ const errCode = err[1]["Custom"];
440
+ if (errIx.programId === generated_1.SOLAUTO_PROGRAM_ID) {
441
+ programError = (0, generated_1.getSolautoErrorFromCode)(errCode, (0, generated_1.createSolautoProgram)());
442
+ if (programError?.name ===
443
+ new generated_1.InvalidRebalanceConditionError((0, generated_1.createSolautoProgram)()).name) {
444
+ canBeIgnored = true;
445
+ }
446
+ }
447
+ else if (errIx.programId === marginfi_sdk_1.MARGINFI_PROGRAM_ID) {
448
+ programError = (0, marginfi_sdk_1.getMarginfiErrorFromName)(errCode, (0, marginfi_sdk_1.createMarginfiProgram)());
449
+ }
450
+ else if (errIx.programId === jupiter_sdk_1.JUPITER_PROGRAM_ID) {
451
+ programError = (0, jupiter_sdk_1.getJupiterErrorFromName)(errCode, (0, jupiter_sdk_1.createJupiterProgram)());
452
+ }
453
+ }
454
+ if (programError) {
455
+ errorName = programError?.name;
456
+ errorName = programError?.message;
457
+ }
458
+ }
459
+ catch { }
460
+ return {
461
+ errorName: errorName ?? "Unknown error",
462
+ errorInfo: errorInfo ?? "Unknown error",
463
+ canBeIgnored,
464
+ };
465
+ }
@@ -28,10 +28,11 @@ export declare enum TransactionStatus {
28
28
  }
29
29
  export type TransactionManagerStatuses = {
30
30
  name: string;
31
+ attemptNum: number;
31
32
  status: TransactionStatus;
33
+ moreInfo?: string;
32
34
  simulationSuccessful?: boolean;
33
35
  txSig?: string;
34
- attemptNum: number;
35
36
  }[];
36
37
  export declare class TransactionsManager {
37
38
  private txHandler;
@@ -1 +1 @@
1
- {"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionsManager.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAKzD,OAAO,EACL,aAAa,EAEd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAa,MAAM,YAAY,CAAC;AA0C7D,qBAAa,eAAe;IAKjB,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CACV;QAAE,EAAE,EAAE,kBAAkB,CAAC;QAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,SAAS,CACxE;IACM,IAAI,CAAC,EAAE,MAAM;IATtB,oBAAoB,EAAG,MAAM,EAAE,CAAC;IAChC,EAAE,CAAC,EAAE,kBAAkB,CAAC;gBAGf,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CACV;QAAE,EAAE,EAAE,kBAAkB,CAAC;QAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,SAAS,CACxE,EACM,IAAI,CAAC,EAAE,MAAM,YAAA;IAGhB,UAAU;IAIV,OAAO,CAAC,UAAU,EAAE,MAAM;IAMhC,cAAc,IAAI,MAAM,EAAE;CAY3B;AAgFD,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,iBAAiB,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB,EAAE,CAAC;AAEJ,qBAAa,mBAAmB;IAK5B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,YAAY,CAAC;IACrB,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,UAAU;IAVpB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAAe;gBAGzB,SAAS,EAAE,aAAa,GAAG,oBAAoB,EAC/C,cAAc,CAAC,GAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,IAAI,aAAA,EAC/D,MAAM,CAAC,EAAE,kBAAkB,YAAA,EAC3B,YAAY,CAAC,EAAE,OAAO,YAAA,EACtB,aAAa,CAAC,EAAE,aAAa,YAAA,EAC7B,OAAO,GAAE,MAAU,EACnB,UAAU,GAAE,MAAY;YAQpB,uBAAuB;IAwCrC,OAAO,CAAC,YAAY;YAwCN,aAAa;IAoBd,UAAU,CACrB,YAAY,EAAE,eAAe,EAAE,EAC/B,eAAe,CAAC,EAAE,kBAAkB,GACnC,OAAO,CAAC,0BAA0B,CAAC;IAyEzB,IAAI,CACf,KAAK,EAAE,eAAe,EAAE,EACxB,eAAe,CAAC,EAAE,kBAAkB,EACpC,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,0BAA0B,CAAC;YA0GxB,eAAe;CA2D9B"}
1
+ {"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionsManager.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAKzD,OAAO,EACL,aAAa,EAEd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAa,MAAM,YAAY,CAAC;AA0C7D,qBAAa,eAAe;IAKjB,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CACV;QAAE,EAAE,EAAE,kBAAkB,CAAC;QAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,SAAS,CACxE;IACM,IAAI,CAAC,EAAE,MAAM;IATtB,oBAAoB,EAAG,MAAM,EAAE,CAAC;IAChC,EAAE,CAAC,EAAE,kBAAkB,CAAC;gBAGf,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CACV;QAAE,EAAE,EAAE,kBAAkB,CAAC;QAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,SAAS,CACxE,EACM,IAAI,CAAC,EAAE,MAAM,YAAA;IAGhB,UAAU;IAIV,OAAO,CAAC,UAAU,EAAE,MAAM;IAMhC,cAAc,IAAI,MAAM,EAAE;CAY3B;AAgFD,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EAAE,CAAC;AAEJ,qBAAa,mBAAmB;IAK5B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,YAAY,CAAC;IACrB,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,UAAU;IAVpB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAAe;gBAGzB,SAAS,EAAE,aAAa,GAAG,oBAAoB,EAC/C,cAAc,CAAC,GAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,IAAI,aAAA,EAC/D,MAAM,CAAC,EAAE,kBAAkB,YAAA,EAC3B,YAAY,CAAC,EAAE,OAAO,YAAA,EACtB,aAAa,CAAC,EAAE,aAAa,YAAA,EAC7B,OAAO,GAAE,MAAU,EACnB,UAAU,GAAE,MAAY;YAQpB,uBAAuB;IAwCrC,OAAO,CAAC,YAAY;YA8CN,aAAa;IAoBd,UAAU,CACrB,YAAY,EAAE,eAAe,EAAE,EAC/B,eAAe,CAAC,EAAE,kBAAkB,GACnC,OAAO,CAAC,0BAA0B,CAAC;IAyEzB,IAAI,CACf,KAAK,EAAE,eAAe,EAAE,EACxB,eAAe,CAAC,EAAE,kBAAkB,EACpC,WAAW,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,0BAA0B,CAAC;YA0GxB,eAAe;CAiD9B"}
@@ -9,7 +9,6 @@ const umi_1 = require("@metaplex-foundation/umi");
9
9
  const solanaUtils_1 = require("../utils/solanaUtils");
10
10
  const generalUtils_1 = require("../utils/generalUtils");
11
11
  const transactionUtils_1 = require("./transactionUtils");
12
- const generated_1 = require("../generated");
13
12
  // import { sendJitoBundledTransactions } from "../utils/jitoUtils";
14
13
  class LookupTables {
15
14
  constructor(defaultLuts, umi) {
@@ -162,7 +161,7 @@ class TransactionsManager {
162
161
  }
163
162
  return transactionSets;
164
163
  }
165
- updateStatus(name, status, attemptNum, txSig, simulationSuccessful) {
164
+ updateStatus(name, status, attemptNum, txSig, simulationSuccessful, moreInfo) {
166
165
  if (!this.statuses.filter((x) => x.name === name)) {
167
166
  this.statuses.push({
168
167
  name,
@@ -170,6 +169,7 @@ class TransactionsManager {
170
169
  txSig,
171
170
  attemptNum,
172
171
  simulationSuccessful,
172
+ moreInfo,
173
173
  });
174
174
  }
175
175
  else {
@@ -180,6 +180,9 @@ class TransactionsManager {
180
180
  if (simulationSuccessful) {
181
181
  this.statuses[idx].simulationSuccessful = simulationSuccessful;
182
182
  }
183
+ if (moreInfo) {
184
+ this.statuses[idx].moreInfo = moreInfo;
185
+ }
183
186
  }
184
187
  else {
185
188
  this.statuses.push({
@@ -188,6 +191,7 @@ class TransactionsManager {
188
191
  txSig,
189
192
  attemptNum,
190
193
  simulationSuccessful,
194
+ moreInfo,
191
195
  });
192
196
  }
193
197
  }
@@ -332,25 +336,13 @@ class TransactionsManager {
332
336
  this.updateStatus(txName, TransactionStatus.Successful, attemptNum, txSig ? bs58_1.default.encode(txSig) : undefined);
333
337
  }
334
338
  catch (e) {
335
- try {
336
- if (typeof e === "object" && e["InstructionError"]) {
337
- const err = e["InstructionError"];
338
- const errIx = err[0];
339
- const errCode = err[1]["Custom"];
340
- const solautoProgram = this.txHandler.umi.programs.get(generated_1.SOLAUTO_PROGRAM_ID);
341
- const invalidRebalanceError = new generated_1.InvalidRebalanceConditionError(solautoProgram);
342
- if (tx.getInstructions()[Math.max(0, errIx - 2)].programId ===
343
- generated_1.SOLAUTO_PROGRAM_ID &&
344
- solautoProgram.getErrorFromCode(errCode)?.name ===
345
- invalidRebalanceError.name) {
346
- this.updateStatus(txName, TransactionStatus.Skipped, attemptNum);
347
- return;
348
- }
349
- }
339
+ const errorDetails = (0, transactionUtils_1.getErrorInfo)(tx, e);
340
+ this.updateStatus(txName, errorDetails.canBeIgnored
341
+ ? TransactionStatus.Skipped
342
+ : TransactionStatus.Failed, attemptNum, undefined, undefined, errorDetails.errorInfo);
343
+ if (!errorDetails.canBeIgnored) {
344
+ throw e;
350
345
  }
351
- catch { }
352
- this.updateStatus(txName, TransactionStatus.Failed, attemptNum);
353
- throw e;
354
346
  }
355
347
  }
356
348
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.176",
3
+ "version": "1.0.178",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "description": "Typescript SDK for the Solauto program on the Solana blockchain",
@@ -1,8 +1,5 @@
1
1
  import { PublicKey } from "@solana/web3.js";
2
2
 
3
3
  export const USD_DECIMALS = 9;
4
-
5
- // TODO
6
4
  export const SOLAUTO_FEES_WALLET = new PublicKey("AprYCPiVeKMCgjQ2ZufwChMzvQ5kFjJo2ekTLSkXsQDm");
7
-
8
5
  export const SOLAUTO_MANAGER = new PublicKey("MNGRcX4nc7quPdzBbNKJ4ScK5EE73JnwJVGxuJXhHCY");
@@ -12,6 +12,7 @@ import {
12
12
  // import { JitoRpcConnection } from "jito-ts";
13
13
  import { SOLAUTO_PROGRAM_ID } from "../generated";
14
14
  import { SOLAUTO_MANAGER } from "./generalAccounts";
15
+ import { JUPITER_PROGRAM_ID } from "../jupiter-sdk";
15
16
 
16
17
  export const BASIS_POINTS = 10000;
17
18
 
@@ -30,8 +31,6 @@ export const PRICES: { [key: string]: { price: number; time: number; } } = {};
30
31
 
31
32
  export const SOLAUTO_LUT = "9D4xwZwDf46n9ft5gQxZzq3rBbdRXsXojKQLZbBdskPY";
32
33
 
33
- export const JUPITER_PROGRAM_ID = "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4";
34
-
35
34
  export const STANDARD_LUT_ACCOUNTS = [
36
35
  PublicKey.default.toString(),
37
36
  SOLAUTO_PROGRAM_ID,