@helium/spl-utils 0.6.1 → 0.6.2-next.34
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/lib/cjs/constants.js +3 -1
- package/lib/cjs/constants.js.map +1 -1
- package/lib/cjs/draft.js +26 -0
- package/lib/cjs/draft.js.map +1 -0
- package/lib/cjs/index.js +6 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/mplAssetAPI.js +44 -8
- package/lib/cjs/mplAssetAPI.js.map +1 -1
- package/lib/cjs/priorityFees.js +133 -0
- package/lib/cjs/priorityFees.js.map +1 -0
- package/lib/cjs/transaction.js +246 -101
- package/lib/cjs/transaction.js.map +1 -1
- package/lib/esm/src/constants.js +2 -0
- package/lib/esm/src/constants.js.map +1 -1
- package/lib/esm/src/draft.js +11 -0
- package/lib/esm/src/draft.js.map +1 -0
- package/lib/esm/src/index.js +11 -9
- package/lib/esm/src/index.js.map +1 -1
- package/lib/esm/src/mplAssetAPI.js +45 -8
- package/lib/esm/src/mplAssetAPI.js.map +1 -1
- package/lib/esm/src/priorityFees.js +104 -0
- package/lib/esm/src/priorityFees.js.map +1 -0
- package/lib/esm/src/transaction.js +232 -101
- package/lib/esm/src/transaction.js.map +1 -1
- package/lib/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/types/src/constants.d.ts +2 -0
- package/lib/types/src/constants.d.ts.map +1 -1
- package/lib/types/src/draft.d.ts +11 -0
- package/lib/types/src/draft.d.ts.map +1 -0
- package/lib/types/src/index.d.ts +13 -11
- package/lib/types/src/index.d.ts.map +1 -1
- package/lib/types/src/mplAssetAPI.d.ts +11 -2
- package/lib/types/src/mplAssetAPI.d.ts.map +1 -1
- package/lib/types/src/priorityFees.d.ts +19 -0
- package/lib/types/src/priorityFees.d.ts.map +1 -0
- package/lib/types/src/transaction.d.ts +51 -5
- package/lib/types/src/transaction.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -15,6 +15,9 @@ export async function getAsset(url, assetId) {
|
|
|
15
15
|
Expires: "0",
|
|
16
16
|
},
|
|
17
17
|
});
|
|
18
|
+
if (response.data && response.data.error) {
|
|
19
|
+
throw new Error(response.data.error.message);
|
|
20
|
+
}
|
|
18
21
|
const result = response.data.result;
|
|
19
22
|
if (result) {
|
|
20
23
|
return toAsset(result);
|
|
@@ -38,6 +41,9 @@ export async function getAssetBatch(url, assetIds) {
|
|
|
38
41
|
Expires: "0",
|
|
39
42
|
},
|
|
40
43
|
});
|
|
44
|
+
if (response.data && response.data.error) {
|
|
45
|
+
throw new Error(response.data.error.message);
|
|
46
|
+
}
|
|
41
47
|
const result = response.data.result;
|
|
42
48
|
if (result) {
|
|
43
49
|
return result.map(toAsset);
|
|
@@ -72,6 +78,9 @@ export async function getAssets(url, assetIds) {
|
|
|
72
78
|
},
|
|
73
79
|
data: JSON.stringify(batch),
|
|
74
80
|
});
|
|
81
|
+
if (response.data && response.data.error) {
|
|
82
|
+
throw new Error(response.data.error.message);
|
|
83
|
+
}
|
|
75
84
|
const result = response.data
|
|
76
85
|
? response.data.map((res) => res?.result || undefined)
|
|
77
86
|
: [];
|
|
@@ -131,6 +140,9 @@ export async function getAssetProof(url, assetId) {
|
|
|
131
140
|
Expires: "0",
|
|
132
141
|
},
|
|
133
142
|
});
|
|
143
|
+
if (response.data && response.data.error) {
|
|
144
|
+
throw new Error(response.data.error.message);
|
|
145
|
+
}
|
|
134
146
|
const result = response.data.result;
|
|
135
147
|
if (result) {
|
|
136
148
|
return {
|
|
@@ -160,6 +172,9 @@ export async function getAssetProofBatch(url, assetIds) {
|
|
|
160
172
|
Expires: "0",
|
|
161
173
|
},
|
|
162
174
|
});
|
|
175
|
+
if (response.data && response.data.error) {
|
|
176
|
+
throw new Error(response.data.error.message);
|
|
177
|
+
}
|
|
163
178
|
const result = response.data.result;
|
|
164
179
|
if (result) {
|
|
165
180
|
return Object.entries(result).reduce((acc, [k, r]) => {
|
|
@@ -192,6 +207,9 @@ export async function getAssetsByOwner(url, wallet, { sortBy = { sortBy: "create
|
|
|
192
207
|
Expires: "0",
|
|
193
208
|
},
|
|
194
209
|
});
|
|
210
|
+
if (response.data && response.data.error) {
|
|
211
|
+
throw new Error(response.data.error.message);
|
|
212
|
+
}
|
|
195
213
|
return response.data.result?.items.map(toAsset);
|
|
196
214
|
}
|
|
197
215
|
catch (error) {
|
|
@@ -199,25 +217,44 @@ export async function getAssetsByOwner(url, wallet, { sortBy = { sortBy: "create
|
|
|
199
217
|
throw error;
|
|
200
218
|
}
|
|
201
219
|
}
|
|
202
|
-
export async function searchAssets(url,
|
|
220
|
+
export async function searchAssets(url, opts) {
|
|
221
|
+
return (await searchAssetsWithPageInfo(url, opts)).items;
|
|
222
|
+
}
|
|
223
|
+
export async function searchAssetsWithPageInfo(url, { creatorVerified = true, sortBy = { sortBy: "created", sortDirection: "asc" }, page = 1, limit = 1000, collection, tokenType, ...rest }) {
|
|
224
|
+
const params = {
|
|
225
|
+
page,
|
|
226
|
+
limit,
|
|
227
|
+
sortBy: tokenType && ["all", "fungible"].includes(tokenType) ? null : sortBy,
|
|
228
|
+
creatorVerified: tokenType && ["all", "fungible"].includes(tokenType)
|
|
229
|
+
? null
|
|
230
|
+
: creatorVerified,
|
|
231
|
+
tokenType,
|
|
232
|
+
...(collection ? { grouping: ["collection", collection] } : {}),
|
|
233
|
+
...rest,
|
|
234
|
+
};
|
|
203
235
|
try {
|
|
204
236
|
const response = await axios.post(url, {
|
|
205
237
|
jsonrpc: "2.0",
|
|
206
238
|
method: "searchAssets",
|
|
207
239
|
id: "get-assets-op-1",
|
|
208
|
-
params
|
|
209
|
-
page,
|
|
210
|
-
creatorVerified,
|
|
211
|
-
sortBy,
|
|
212
|
-
...rest,
|
|
213
|
-
},
|
|
240
|
+
params,
|
|
214
241
|
headers: {
|
|
215
242
|
"Cache-Control": "no-cache",
|
|
216
243
|
Pragma: "no-cache",
|
|
217
244
|
Expires: "0",
|
|
218
245
|
},
|
|
219
246
|
});
|
|
220
|
-
|
|
247
|
+
if (response.data && response.data.error) {
|
|
248
|
+
throw new Error(response.data.error.message);
|
|
249
|
+
}
|
|
250
|
+
const ret = response.data.result;
|
|
251
|
+
return {
|
|
252
|
+
items: ret.items?.map(toAsset),
|
|
253
|
+
limit: ret.limit,
|
|
254
|
+
total: ret.total,
|
|
255
|
+
page: ret.page,
|
|
256
|
+
grandTotal: ret.grand_total,
|
|
257
|
+
};
|
|
221
258
|
}
|
|
222
259
|
catch (error) {
|
|
223
260
|
console.error(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mplAssetAPI.js","sourceRoot":"","sources":["../../../src/mplAssetAPI.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mplAssetAPI.js","sourceRoot":"","sources":["../../../src/mplAssetAPI.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,aAAa;AACb,OAAO,MAAM,MAAM,MAAM,CAAC;AAuC1B,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,GAAW,EACX,OAAkB;IAElB,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACrC,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,UAAU;YAClB,EAAE,EAAE,YAAY;YAChB,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE;YAClC,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU;gBAC3B,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,GAAG;aACb;SACF,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC9C;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QACpC,IAAI,MAAM,EAAE;YACV,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;SACxB;KACF;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,KAAK,CAAC;KACb;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAW,EACX,QAAqB;IAErB,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACrC,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,eAAe;YACvB,EAAE,EAAE,YAAY;YAChB,MAAM,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE;YAC9D,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU;gBAC3B,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,GAAG;aACb;SACF,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC9C;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QACpC,IAAI,MAAM,EAAE;YACV,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SAC5B;KACF;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,KAAK,CAAC;KACb;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAW,EACX,QAAqB;IAErB,IAAI;QACF,IAAI,QAAQ,CAAC,MAAM,GAAG,IAAI,EAAE;YAC1B,MAAM,IAAI,KAAK,CACb,4CAA4C,QAAQ,CAAC,MAAM,EAAE,CAC9D,CAAC;SACH;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1C,OAAO,EAAE,KAAK;YACd,EAAE,EAAE,aAAa,CAAC,EAAE;YACpB,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE;gBACN,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE;aACvB;SACF,CAAC,CAAC,CAAC;QAEJ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC;YAC3B,GAAG;YACH,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU;gBAC3B,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,GAAG;aACb;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;SAC5B,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC9C;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI;YAC1B,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,IAAI,SAAS,CAAC;YAC3D,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO;YACL,GAAG,CAAC,MAAM;gBACR,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5D,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;KACH;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,KAAK,CAAC;KACb;AACH,CAAC;AAED,SAAS,OAAO,CAAC,MAAW;IAC1B,OAAO;QACL,GAAG,MAAM;QACT,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAC3B,CAAC,EACC,OAAO,EACP,KAAK,EACL,QAAQ,GAKT,EAAE,EAAE,CAAC,CAAC;YACL,KAAK;YACL,QAAQ;YACR,OAAO,EAAE,OAAO,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC;SAC3C,CAAC,CACH;QACD,EAAE,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,QAAQ,EACN,MAAM,CAAC,QAAQ;YACf,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBAC/B,GAAG,CAAC;gBACJ,WAAW,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;aAC1C,CAAC,CAAC;QACL,WAAW,EAAE;YACX,GAAG,MAAM,CAAC,WAAW;YACrB,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO;YAClC,QAAQ,EACN,MAAM,CAAC,WAAW,CAAC,SAAS;gBAC5B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC1D,WAAW,EACT,MAAM,CAAC,WAAW,CAAC,YAAY;gBAC/B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAC7D,SAAS,EACP,MAAM,CAAC,WAAW,CAAC,UAAU;gBAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAC3D,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;SACxE;QACD,SAAS,EAAE;YACT,GAAG,MAAM,CAAC,SAAS;YACnB,QAAQ,EACN,MAAM,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;YACvE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;SACvE;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAW,EACX,OAAkB;IAElB,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACrC,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,eAAe;YACvB,EAAE,EAAE,YAAY;YAChB,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE;YAClC,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU;gBAC3B,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,GAAG;aACb;SACF,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC9C;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QACpC,IAAI,MAAM,EAAE;YACV,OAAO;gBACL,IAAI,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;gBAChC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;gBACrD,SAAS,EAAE,MAAM,CAAC,UAAU;gBAC5B,IAAI,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;gBAChC,MAAM,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;aACtC,CAAC;SACH;KACF;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,KAAK,CAAC;KACb;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAW,EACX,QAAqB;IAErB,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACrC,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,oBAAoB;YAC5B,EAAE,EAAE,YAAY;YAChB,MAAM,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,EAAE;YAC9D,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU;gBAC3B,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,GAAG;aACb;SACF,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC9C;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QACpC,IAAI,MAAM,EAAE;YACV,OAAO,MAAM,CAAC,OAAO,CAAC,MAA6B,CAAC,CAAC,MAAM,CACzD,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;gBACd,GAAG,CAAC,CAAC,CAAC,GAAG;oBACP,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC3B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;oBAChD,SAAS,EAAE,CAAC,CAAC,UAAU;oBACvB,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC3B,MAAM,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;iBACnB,CAAC;gBAChB,OAAO,GAAG,CAAC;YACb,CAAC,EACD,EAAgC,CACjC,CAAC;SACH;KACF;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,KAAK,CAAC;KACb;AACH,CAAC;AAUD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAW,EACX,MAAc,EACd,EACE,MAAM,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,EACpD,KAAK,GAAG,EAAE,EACV,IAAI,GAAG,CAAC,EACR,MAAM,GAAG,EAAE,EACX,KAAK,GAAG,EAAE,MACW,EAAE;IAEzB,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACrC,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,kBAAkB;YAC1B,EAAE,EAAE,YAAY;YAChB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC;YACpD,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU;gBAC3B,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,GAAG;aACb;SACF,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC9C;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KACjD;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,KAAK,CAAC;KACb;AACH,CAAC;AAkBD,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAW,EACX,IAAsB;IAEtB,OAAO,CAAC,MAAM,wBAAwB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,GAAW,EACX,EACE,eAAe,GAAG,IAAI,EACtB,MAAM,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,EACpD,IAAI,GAAG,CAAC,EACR,KAAK,GAAG,IAAI,EACZ,UAAU,EACV,SAAS,EACT,GAAG,IAAI,EACU;IAQnB,MAAM,MAAM,GAAG;QACb,IAAI;QACJ,KAAK;QACL,MAAM,EACJ,SAAS,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;QACtE,eAAe,EACb,SAAS,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;YAClD,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,eAAe;QACrB,SAAS;QACT,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,GAAG,IAAI;KACR,CAAC;IAEF,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACrC,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,cAAc;YACtB,EAAE,EAAE,iBAAiB;YACrB,MAAM;YACN,OAAO,EAAE;gBACP,eAAe,EAAE,UAAU;gBAC3B,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,GAAG;aACb;SACF,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC9C;QAED,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QACjC,OAAO;YACL,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC;YAC9B,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,UAAU,EAAE,GAAG,CAAC,WAAW;SAC5B,CAAC;KACH;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,KAAK,CAAC;KACb;AACH,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { ComputeBudgetProgram, PublicKey, } from "@solana/web3.js";
|
|
2
|
+
import { populateMissingDraftInfo } from "./draft";
|
|
3
|
+
import { toVersionedTx } from "./transaction";
|
|
4
|
+
const MAX_RECENT_PRIORITY_FEE_ACCOUNTS = 128;
|
|
5
|
+
// Borrowed with love from https://github.com/blockworks-foundation/mango-v4/blob/57a9835aa8f636b6d231ba2c4008bfe89cbf08ba/ts/client/src/client.ts#L4552
|
|
6
|
+
/**
|
|
7
|
+
* Returns an estimate of a prioritization fee for a set of instructions.
|
|
8
|
+
*
|
|
9
|
+
* The estimate is based on the median fees of writable accounts that will be involved in the transaction.
|
|
10
|
+
*
|
|
11
|
+
* @param ixs - the instructions that make up the transaction
|
|
12
|
+
* @returns prioritizationFeeEstimate -- in microLamports
|
|
13
|
+
*/
|
|
14
|
+
export async function estimatePrioritizationFee(connection, ixs, basePriorityFee) {
|
|
15
|
+
const accounts = ixs.map((x) => x.keys.map((k) => k.pubkey)).flat();
|
|
16
|
+
const uniqueAccounts = [...new Set(accounts.map((x) => x.toBase58()))]
|
|
17
|
+
.map((a) => new PublicKey(a))
|
|
18
|
+
.slice(0, MAX_RECENT_PRIORITY_FEE_ACCOUNTS);
|
|
19
|
+
try {
|
|
20
|
+
// @ts-ignore
|
|
21
|
+
const { result: { priorityFeeEstimate } } = await connection._rpcRequest("getPriorityFeeEstimate", connection._buildArgs([
|
|
22
|
+
{
|
|
23
|
+
accountKeys: uniqueAccounts.map((a) => a.toBase58()),
|
|
24
|
+
},
|
|
25
|
+
]));
|
|
26
|
+
return Math.max(basePriorityFee || 1, Math.ceil(priorityFeeEstimate));
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
console.error("Failed to use getPriorityFeeEstimate, falling back to getRecentPrioritizationFees", e);
|
|
30
|
+
const priorityFees = await connection.getRecentPrioritizationFees({
|
|
31
|
+
lockedWritableAccounts: uniqueAccounts,
|
|
32
|
+
});
|
|
33
|
+
if (priorityFees.length < 1) {
|
|
34
|
+
return Math.max(basePriorityFee || 0, 1);
|
|
35
|
+
}
|
|
36
|
+
// get max priority fee per slot (and sort by slot from old to new)
|
|
37
|
+
const groupedBySlot = priorityFees.reduce((acc, fee) => {
|
|
38
|
+
const key = fee.slot;
|
|
39
|
+
if (!acc[key]) {
|
|
40
|
+
acc[key] = [];
|
|
41
|
+
}
|
|
42
|
+
acc[key].push(fee);
|
|
43
|
+
return acc;
|
|
44
|
+
}, {});
|
|
45
|
+
const maxFeeBySlot = Object.keys(groupedBySlot).reduce((acc, slot) => {
|
|
46
|
+
acc[slot] = groupedBySlot[slot].reduce((max, fee) => {
|
|
47
|
+
return fee.prioritizationFee > max.prioritizationFee ? fee : max;
|
|
48
|
+
});
|
|
49
|
+
return acc;
|
|
50
|
+
}, {});
|
|
51
|
+
const maximumFees = Object.values(maxFeeBySlot).sort((a, b) => a.slot - b.slot);
|
|
52
|
+
// get median of last 20 fees
|
|
53
|
+
const recentFees = maximumFees.slice(Math.max(maximumFees.length - 20, 0));
|
|
54
|
+
const mid = Math.floor(recentFees.length / 2);
|
|
55
|
+
const medianFee = recentFees.length % 2 !== 0
|
|
56
|
+
? recentFees[mid].prioritizationFee
|
|
57
|
+
: (recentFees[mid - 1].prioritizationFee +
|
|
58
|
+
recentFees[mid].prioritizationFee) /
|
|
59
|
+
2;
|
|
60
|
+
return Math.max(basePriorityFee || 1, Math.ceil(medianFee));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export const estimateComputeUnits = async (connection, tx, retries = 5) => {
|
|
64
|
+
const sim = (await connection.simulateTransaction(tx)).value;
|
|
65
|
+
if (sim.err && sim.err.toString().includes("BlockhashNotFound") && retries > 0) {
|
|
66
|
+
await sleep(500);
|
|
67
|
+
return estimateComputeUnits(connection, tx, retries - 1);
|
|
68
|
+
}
|
|
69
|
+
return sim.unitsConsumed;
|
|
70
|
+
};
|
|
71
|
+
async function sleep(ms) {
|
|
72
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
73
|
+
}
|
|
74
|
+
export async function withPriorityFees({ connection, computeUnits, instructions = [], basePriorityFee, computeScaleUp, ...rest }) {
|
|
75
|
+
if (!computeUnits && !rest.feePayer) {
|
|
76
|
+
throw new Error("Must provide feePayer if estimating compute units");
|
|
77
|
+
}
|
|
78
|
+
const estimate = await estimatePrioritizationFee(connection, instructions, basePriorityFee);
|
|
79
|
+
if (!computeUnits) {
|
|
80
|
+
const temp = {
|
|
81
|
+
instructions,
|
|
82
|
+
feePayer: rest.feePayer,
|
|
83
|
+
...rest,
|
|
84
|
+
};
|
|
85
|
+
const tx = await populateMissingDraftInfo(connection, temp);
|
|
86
|
+
const estimatedFee = await estimateComputeUnits(connection, toVersionedTx(tx));
|
|
87
|
+
if (estimatedFee) {
|
|
88
|
+
computeUnits = Math.ceil(estimatedFee * (computeScaleUp || 1.1));
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
computeUnits = 200000;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return [
|
|
95
|
+
ComputeBudgetProgram.setComputeUnitLimit({
|
|
96
|
+
units: computeUnits,
|
|
97
|
+
}),
|
|
98
|
+
ComputeBudgetProgram.setComputeUnitPrice({
|
|
99
|
+
microLamports: estimate,
|
|
100
|
+
}),
|
|
101
|
+
...instructions,
|
|
102
|
+
];
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=priorityFees.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"priorityFees.js","sourceRoot":"","sources":["../../../src/priorityFees.ts"],"names":[],"mappings":"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"}
|