@helium/spl-utils 0.0.1

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 (99) hide show
  1. package/LICENSE +203 -0
  2. package/lib/cjs/accountFetchCache/accountFetchCache.js +365 -0
  3. package/lib/cjs/accountFetchCache/accountFetchCache.js.map +1 -0
  4. package/lib/cjs/accountFetchCache/eventEmitter.js +37 -0
  5. package/lib/cjs/accountFetchCache/eventEmitter.js.map +1 -0
  6. package/lib/cjs/accountFetchCache/getMultipleAccounts.js +53 -0
  7. package/lib/cjs/accountFetchCache/getMultipleAccounts.js.map +1 -0
  8. package/lib/cjs/accountFetchCache/index.js +20 -0
  9. package/lib/cjs/accountFetchCache/index.js.map +1 -0
  10. package/lib/cjs/accountsResolver/ataResolver.js +35 -0
  11. package/lib/cjs/accountsResolver/ataResolver.js.map +1 -0
  12. package/lib/cjs/accountsResolver/combineResolvers.js +27 -0
  13. package/lib/cjs/accountsResolver/combineResolvers.js.map +1 -0
  14. package/lib/cjs/accountsResolver/individual.js +90 -0
  15. package/lib/cjs/accountsResolver/individual.js.map +1 -0
  16. package/lib/cjs/accountsResolver/utils.js +32 -0
  17. package/lib/cjs/accountsResolver/utils.js.map +1 -0
  18. package/lib/cjs/anchorError.js +265 -0
  19. package/lib/cjs/anchorError.js.map +1 -0
  20. package/lib/cjs/constants.js +8 -0
  21. package/lib/cjs/constants.js.map +1 -0
  22. package/lib/cjs/executeRemoteTxn.js +109 -0
  23. package/lib/cjs/executeRemoteTxn.js.map +1 -0
  24. package/lib/cjs/extendBorsh.js +33 -0
  25. package/lib/cjs/extendBorsh.js.map +1 -0
  26. package/lib/cjs/index.js +35 -0
  27. package/lib/cjs/index.js.map +1 -0
  28. package/lib/cjs/token.js +196 -0
  29. package/lib/cjs/token.js.map +1 -0
  30. package/lib/cjs/transaction.js +308 -0
  31. package/lib/cjs/transaction.js.map +1 -0
  32. package/lib/cjs/utils.js +58 -0
  33. package/lib/cjs/utils.js.map +1 -0
  34. package/lib/esm/src/accountFetchCache/accountFetchCache.js +338 -0
  35. package/lib/esm/src/accountFetchCache/accountFetchCache.js.map +1 -0
  36. package/lib/esm/src/accountFetchCache/eventEmitter.js +33 -0
  37. package/lib/esm/src/accountFetchCache/eventEmitter.js.map +1 -0
  38. package/lib/esm/src/accountFetchCache/getMultipleAccounts.js +32 -0
  39. package/lib/esm/src/accountFetchCache/getMultipleAccounts.js.map +1 -0
  40. package/lib/esm/src/accountFetchCache/index.js +4 -0
  41. package/lib/esm/src/accountFetchCache/index.js.map +1 -0
  42. package/lib/esm/src/accountsResolver/ataResolver.js +22 -0
  43. package/lib/esm/src/accountsResolver/ataResolver.js.map +1 -0
  44. package/lib/esm/src/accountsResolver/combineResolvers.js +14 -0
  45. package/lib/esm/src/accountsResolver/combineResolvers.js.map +1 -0
  46. package/lib/esm/src/accountsResolver/individual.js +72 -0
  47. package/lib/esm/src/accountsResolver/individual.js.map +1 -0
  48. package/lib/esm/src/accountsResolver/utils.js +27 -0
  49. package/lib/esm/src/accountsResolver/utils.js.map +1 -0
  50. package/lib/esm/src/anchorError.js +262 -0
  51. package/lib/esm/src/anchorError.js.map +1 -0
  52. package/lib/esm/src/constants.js +5 -0
  53. package/lib/esm/src/constants.js.map +1 -0
  54. package/lib/esm/src/executeRemoteTxn.js +79 -0
  55. package/lib/esm/src/executeRemoteTxn.js.map +1 -0
  56. package/lib/esm/src/extendBorsh.js +26 -0
  57. package/lib/esm/src/extendBorsh.js.map +1 -0
  58. package/lib/esm/src/index.js +13 -0
  59. package/lib/esm/src/index.js.map +1 -0
  60. package/lib/esm/src/token.js +175 -0
  61. package/lib/esm/src/token.js.map +1 -0
  62. package/lib/esm/src/transaction.js +274 -0
  63. package/lib/esm/src/transaction.js.map +1 -0
  64. package/lib/esm/src/utils.js +44 -0
  65. package/lib/esm/src/utils.js.map +1 -0
  66. package/lib/esm/tsconfig.esm.tsbuildinfo +1 -0
  67. package/lib/types/src/accountFetchCache/accountFetchCache.d.ts +67 -0
  68. package/lib/types/src/accountFetchCache/accountFetchCache.d.ts.map +1 -0
  69. package/lib/types/src/accountFetchCache/eventEmitter.d.ts +19 -0
  70. package/lib/types/src/accountFetchCache/eventEmitter.d.ts.map +1 -0
  71. package/lib/types/src/accountFetchCache/getMultipleAccounts.d.ts +7 -0
  72. package/lib/types/src/accountFetchCache/getMultipleAccounts.d.ts.map +1 -0
  73. package/lib/types/src/accountFetchCache/index.d.ts +4 -0
  74. package/lib/types/src/accountFetchCache/index.d.ts.map +1 -0
  75. package/lib/types/src/accountsResolver/ataResolver.d.ts +9 -0
  76. package/lib/types/src/accountsResolver/ataResolver.d.ts.map +1 -0
  77. package/lib/types/src/accountsResolver/combineResolvers.d.ts +3 -0
  78. package/lib/types/src/accountsResolver/combineResolvers.d.ts.map +1 -0
  79. package/lib/types/src/accountsResolver/individual.d.ts +25 -0
  80. package/lib/types/src/accountsResolver/individual.d.ts.map +1 -0
  81. package/lib/types/src/accountsResolver/utils.d.ts +7 -0
  82. package/lib/types/src/accountsResolver/utils.d.ts.map +1 -0
  83. package/lib/types/src/anchorError.d.ts +9 -0
  84. package/lib/types/src/anchorError.d.ts.map +1 -0
  85. package/lib/types/src/constants.d.ts +5 -0
  86. package/lib/types/src/constants.d.ts.map +1 -0
  87. package/lib/types/src/executeRemoteTxn.d.ts +23 -0
  88. package/lib/types/src/executeRemoteTxn.d.ts.map +1 -0
  89. package/lib/types/src/extendBorsh.d.ts +3 -0
  90. package/lib/types/src/extendBorsh.d.ts.map +1 -0
  91. package/lib/types/src/index.d.ts +13 -0
  92. package/lib/types/src/index.d.ts.map +1 -0
  93. package/lib/types/src/token.d.ts +16 -0
  94. package/lib/types/src/token.d.ts.map +1 -0
  95. package/lib/types/src/transaction.d.ts +26 -0
  96. package/lib/types/src/transaction.d.ts.map +1 -0
  97. package/lib/types/src/utils.d.ts +12 -0
  98. package/lib/types/src/utils.d.ts.map +1 -0
  99. package/package.json +44 -0
@@ -0,0 +1,109 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.getAndSignRemoteTxns = exports.executeTxnsInOrder = exports.signOnlyNeeded = exports.executeRemoteTxn = void 0;
16
+ const web3_js_1 = require("@solana/web3.js");
17
+ const anchorError_1 = require("./anchorError");
18
+ const axios_1 = __importDefault(require("axios"));
19
+ const transaction_1 = require("./transaction");
20
+ function promiseAllInOrder(it) {
21
+ return __awaiter(this, void 0, void 0, function* () {
22
+ let ret = [];
23
+ for (const i of it) {
24
+ ret.push(yield i());
25
+ }
26
+ return ret;
27
+ });
28
+ }
29
+ /**
30
+ * Execute transactions from a remote server (either single or multiple transactions)
31
+ * @param provider
32
+ * @param url
33
+ * @param body
34
+ * @param errors
35
+ * @returns
36
+ */
37
+ function executeRemoteTxn(provider, url, body, errors = new Map()) {
38
+ return __awaiter(this, void 0, void 0, function* () {
39
+ const txnsToExec = yield getAndSignRemoteTxns(provider, url, body);
40
+ return executeTxnsInOrder(provider, txnsToExec, errors);
41
+ });
42
+ }
43
+ exports.executeRemoteTxn = executeRemoteTxn;
44
+ function signOnlyNeeded(provider, rawTxns) {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ const txns = rawTxns.map((t) => web3_js_1.Transaction.from(t));
47
+ const needToSign = txns.filter((tx) => tx.signatures.some((sig) => sig.publicKey.equals(provider.wallet.publicKey)));
48
+ const signedTxns = yield provider.wallet.signAllTransactions(needToSign);
49
+ const txnsToExec = txns.map((txn, idx) => {
50
+ const index = needToSign.indexOf(txn);
51
+ if (index >= 0) {
52
+ return signedTxns[index].serialize({
53
+ requireAllSignatures: false,
54
+ verifySignatures: false,
55
+ });
56
+ }
57
+ return Buffer.from(rawTxns[idx]);
58
+ });
59
+ return txnsToExec;
60
+ });
61
+ }
62
+ exports.signOnlyNeeded = signOnlyNeeded;
63
+ function executeTxnsInOrder(provider, txns, errors = new Map()) {
64
+ return __awaiter(this, void 0, void 0, function* () {
65
+ try {
66
+ return [
67
+ ...(yield promiseAllInOrder(txns.map((txn) => () => __awaiter(this, void 0, void 0, function* () {
68
+ const { txid } = yield (0, transaction_1.sendAndConfirmWithRetry)(provider.connection, txn, {
69
+ skipPreflight: true,
70
+ }, "confirmed");
71
+ return txid;
72
+ })))),
73
+ ];
74
+ }
75
+ catch (e) {
76
+ const wrappedE = anchorError_1.ProgramError.parse(e, errors);
77
+ throw wrappedE == null ? e : wrappedE;
78
+ }
79
+ });
80
+ }
81
+ exports.executeTxnsInOrder = executeTxnsInOrder;
82
+ /**
83
+ * Get and sign transactions from a remote server (either single or multiple transactions)
84
+ * @param provider
85
+ * @param url
86
+ * @param body
87
+ * @param errors
88
+ * @returns
89
+ */
90
+ function getAndSignRemoteTxns(provider, url, body) {
91
+ var _a, _b;
92
+ return __awaiter(this, void 0, void 0, function* () {
93
+ try {
94
+ const resp = yield axios_1.default.post(url, body, {
95
+ responseType: "json",
96
+ });
97
+ const rawTxns = Array.isArray(resp.data) ? resp.data : [resp.data];
98
+ return yield signOnlyNeeded(provider, rawTxns.map((t) => t.data));
99
+ }
100
+ catch (e) {
101
+ if ((_b = (_a = e.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) {
102
+ throw new Error(e.response.data.message);
103
+ }
104
+ throw e;
105
+ }
106
+ });
107
+ }
108
+ exports.getAndSignRemoteTxns = getAndSignRemoteTxns;
109
+ //# sourceMappingURL=executeRemoteTxn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executeRemoteTxn.js","sourceRoot":"","sources":["../../src/executeRemoteTxn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.extendBorsh = void 0;
7
+ const web3_js_1 = require("@solana/web3.js");
8
+ const borsh_1 = require("borsh");
9
+ // @ts-ignore
10
+ const bs58_1 = __importDefault(require("bs58"));
11
+ const extendBorsh = () => {
12
+ borsh_1.BinaryReader.prototype.readPubkey = function () {
13
+ const reader = this;
14
+ const array = reader.readFixedArray(32);
15
+ return new web3_js_1.PublicKey(array);
16
+ };
17
+ borsh_1.BinaryWriter.prototype.writePubkey = function (value) {
18
+ const writer = this;
19
+ writer.writeFixedArray(value.toBuffer());
20
+ };
21
+ borsh_1.BinaryReader.prototype.readPubkeyAsString = function () {
22
+ const reader = this;
23
+ const array = reader.readFixedArray(32);
24
+ return bs58_1.default.encode(array);
25
+ };
26
+ borsh_1.BinaryWriter.prototype.writePubkeyAsString = function (value) {
27
+ const writer = this;
28
+ writer.writeFixedArray(bs58_1.default.decode(value));
29
+ };
30
+ };
31
+ exports.extendBorsh = extendBorsh;
32
+ (0, exports.extendBorsh)();
33
+ //# sourceMappingURL=extendBorsh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extendBorsh.js","sourceRoot":"","sources":["../../src/extendBorsh.ts"],"names":[],"mappings":";;;;;;AAAA,6CAA4C;AAC5C,iCAAmD;AACnD,aAAa;AACb,gDAA0B;AAInB,MAAM,WAAW,GAAG,GAAG,EAAE;IAC7B,oBAAY,CAAC,SAAiB,CAAC,UAAU,GAAG;QAC3C,MAAM,MAAM,GAAG,IAA+B,CAAC;QAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACxC,OAAO,IAAI,mBAAS,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC,CAAC;IAED,oBAAY,CAAC,SAAiB,CAAC,WAAW,GAAG,UAAU,KAAgB;QACtE,MAAM,MAAM,GAAG,IAA+B,CAAC;QAC/C,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC;IAED,oBAAY,CAAC,SAAiB,CAAC,kBAAkB,GAAG;QACnD,MAAM,MAAM,GAAG,IAA+B,CAAC;QAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACxC,OAAO,cAAM,CAAC,MAAM,CAAC,KAAK,CAAoB,CAAC;IACjD,CAAC,CAAC;IAED,oBAAY,CAAC,SAAiB,CAAC,mBAAmB,GAAG,UACpD,KAAsB;QAEtB,MAAM,MAAM,GAAG,IAA+B,CAAC;QAC/C,MAAM,CAAC,eAAe,CAAC,cAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC;AACJ,CAAC,CAAC;AAxBW,QAAA,WAAW,eAwBtB;AAEF,IAAA,mBAAW,GAAE,CAAC"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ataResolver = exports.set = exports.get = exports.resolveIndividual = exports.combineResolvers = void 0;
18
+ var combineResolvers_1 = require("./accountsResolver/combineResolvers");
19
+ Object.defineProperty(exports, "combineResolvers", { enumerable: true, get: function () { return combineResolvers_1.combineResolvers; } });
20
+ var individual_1 = require("./accountsResolver/individual");
21
+ Object.defineProperty(exports, "resolveIndividual", { enumerable: true, get: function () { return individual_1.resolveIndividual; } });
22
+ var utils_1 = require("./accountsResolver/utils");
23
+ Object.defineProperty(exports, "get", { enumerable: true, get: function () { return utils_1.get; } });
24
+ Object.defineProperty(exports, "set", { enumerable: true, get: function () { return utils_1.set; } });
25
+ var ataResolver_1 = require("./accountsResolver/ataResolver");
26
+ Object.defineProperty(exports, "ataResolver", { enumerable: true, get: function () { return ataResolver_1.ataResolver; } });
27
+ __exportStar(require("./extendBorsh"), exports);
28
+ __exportStar(require("./transaction"), exports);
29
+ __exportStar(require("./accountFetchCache"), exports);
30
+ __exportStar(require("./anchorError"), exports);
31
+ __exportStar(require("./executeRemoteTxn"), exports);
32
+ __exportStar(require("./utils"), exports);
33
+ __exportStar(require("./token"), exports);
34
+ __exportStar(require("./constants"), exports);
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wEAAuE;AAA9D,oHAAA,gBAAgB,OAAA;AACzB,4DAAkE;AAAzD,+GAAA,iBAAiB,OAAA;AAC1B,kDAAoD;AAA3C,4FAAA,GAAG,OAAA;AAAE,4FAAA,GAAG,OAAA;AACjB,8DAA6D;AAApD,0GAAA,WAAW,OAAA;AAEpB,gDAA8B;AAC9B,gDAA8B;AAC9B,sDAAoC;AACpC,gDAA8B;AAC9B,qDAAmC;AACnC,0CAAwB;AACxB,0CAAwB;AACxB,8CAA4B"}
@@ -0,0 +1,196 @@
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
+ exports.createNft = exports.createMint = exports.createMintInstructions = exports.createAtaAndMint = exports.createAtaAndMintInstructions = exports.mintTo = void 0;
13
+ const mpl_token_metadata_1 = require("@metaplex-foundation/mpl-token-metadata");
14
+ const spl_token_1 = require("@solana/spl-token");
15
+ const web3_js_1 = require("@solana/web3.js");
16
+ function mintTo(provider, mint, amount, destination) {
17
+ return __awaiter(this, void 0, void 0, function* () {
18
+ const mintTx = new web3_js_1.Transaction();
19
+ mintTx.add((0, spl_token_1.createMintToInstruction)(mint, destination, provider.wallet.publicKey, amount));
20
+ try {
21
+ yield provider.sendAndConfirm(mintTx);
22
+ }
23
+ catch (e) {
24
+ console.log("Error", e, e.logs);
25
+ if (e.logs) {
26
+ console.error(e.logs.join("\n"));
27
+ }
28
+ throw e;
29
+ }
30
+ });
31
+ }
32
+ exports.mintTo = mintTo;
33
+ function createAtaAndMintInstructions(provider, mint, amount, to = provider.wallet.publicKey, authority = provider.wallet.publicKey, payer = provider.wallet.publicKey) {
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ const ata = yield (0, spl_token_1.getAssociatedTokenAddress)(mint, to, true);
36
+ const instructions = [];
37
+ if (!(yield provider.connection.getAccountInfo(ata))) {
38
+ instructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(payer, ata, to, mint));
39
+ }
40
+ if (amount != 0) {
41
+ instructions.push((0, spl_token_1.createMintToInstruction)(mint, ata, authority, BigInt(amount.toString())));
42
+ }
43
+ return {
44
+ instructions,
45
+ ata,
46
+ };
47
+ });
48
+ }
49
+ exports.createAtaAndMintInstructions = createAtaAndMintInstructions;
50
+ function createAtaAndMint(provider, mint, amount, to = provider.wallet.publicKey, authority = provider.wallet.publicKey, payer = provider.wallet.publicKey, confirmOptions) {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ const mintTx = new web3_js_1.Transaction();
53
+ const { instructions, ata } = yield createAtaAndMintInstructions(provider, mint, amount, to, authority, payer);
54
+ if (instructions.length > 0)
55
+ mintTx.add(...instructions);
56
+ try {
57
+ if (instructions.length > 0)
58
+ yield provider.sendAndConfirm(mintTx, undefined, confirmOptions);
59
+ }
60
+ catch (e) {
61
+ console.log("Error", e, e.logs);
62
+ if (e.logs) {
63
+ console.error(e.logs.join("\n"));
64
+ }
65
+ throw e;
66
+ }
67
+ return ata;
68
+ });
69
+ }
70
+ exports.createAtaAndMint = createAtaAndMint;
71
+ function createMintInstructions(provider, decimals, mintAuthority, freezeAuthority = null, mintKeypair = web3_js_1.Keypair.generate()) {
72
+ return __awaiter(this, void 0, void 0, function* () {
73
+ const mintKey = mintKeypair.publicKey;
74
+ return [
75
+ web3_js_1.SystemProgram.createAccount({
76
+ fromPubkey: provider.wallet.publicKey,
77
+ newAccountPubkey: mintKey,
78
+ space: 82,
79
+ lamports: yield provider.connection.getMinimumBalanceForRentExemption(82),
80
+ programId: spl_token_1.TOKEN_PROGRAM_ID,
81
+ }),
82
+ yield (0, spl_token_1.createInitializeMintInstruction)(mintKeypair.publicKey, decimals, mintAuthority, freezeAuthority),
83
+ ];
84
+ });
85
+ }
86
+ exports.createMintInstructions = createMintInstructions;
87
+ function createMint(provider, decimals, mintAuthority, freezeAuthority = null, mintKeypair = web3_js_1.Keypair.generate()) {
88
+ return __awaiter(this, void 0, void 0, function* () {
89
+ const tx = new web3_js_1.Transaction();
90
+ tx.add(...(yield createMintInstructions(provider, decimals, mintAuthority, freezeAuthority, mintKeypair)));
91
+ try {
92
+ yield provider.sendAndConfirm(tx, [mintKeypair]);
93
+ }
94
+ catch (e) {
95
+ console.log("Error", e, e.logs);
96
+ if (e.logs) {
97
+ console.error(e.logs.join("\n"));
98
+ }
99
+ throw e;
100
+ }
101
+ return mintKeypair.publicKey;
102
+ });
103
+ }
104
+ exports.createMint = createMint;
105
+ function createNft(provider, recipient, data = {}, collectionKey, mintKeypair = web3_js_1.Keypair.generate(), holderKey = provider.wallet.publicKey) {
106
+ return __awaiter(this, void 0, void 0, function* () {
107
+ const mintKey = mintKeypair.publicKey;
108
+ const instructions = yield createMintInstructions(provider, 0, provider.wallet.publicKey, provider.wallet.publicKey, mintKeypair);
109
+ const [metadata] = web3_js_1.PublicKey.findProgramAddressSync([
110
+ Buffer.from("metadata", "utf8"),
111
+ mpl_token_metadata_1.PROGRAM_ID.toBuffer(),
112
+ mintKey.toBuffer(),
113
+ ], mpl_token_metadata_1.PROGRAM_ID);
114
+ instructions.push(yield (0, mpl_token_metadata_1.createCreateMetadataAccountV3Instruction)({
115
+ metadata,
116
+ mint: mintKey,
117
+ mintAuthority: provider.wallet.publicKey,
118
+ payer: provider.wallet.publicKey,
119
+ updateAuthority: provider.wallet.publicKey,
120
+ }, {
121
+ createMetadataAccountArgsV3: {
122
+ data: Object.assign({ name: "test", symbol: "TST", uri: "https://shdw-drive.genesysgo.net/CsDkETHRRR1EcueeN346MJoqzymkkr7RFjMqGpZMzAib/dc.json", sellerFeeBasisPoints: 10, creators: [
123
+ {
124
+ address: holderKey,
125
+ verified: true,
126
+ share: 100,
127
+ },
128
+ ], collection: collectionKey
129
+ ? { key: collectionKey, verified: false }
130
+ : null, uses: null }, data),
131
+ isMutable: true,
132
+ collectionDetails: null,
133
+ },
134
+ }));
135
+ const { instructions: mintInstrs } = yield createAtaAndMintInstructions(provider, mintKeypair.publicKey, 1, recipient);
136
+ instructions.push(...mintInstrs);
137
+ if (collectionKey) {
138
+ const [collectionMetadataAccount] = web3_js_1.PublicKey.findProgramAddressSync([
139
+ Buffer.from("metadata", "utf8"),
140
+ mpl_token_metadata_1.PROGRAM_ID.toBuffer(),
141
+ collectionKey.toBuffer(),
142
+ ], mpl_token_metadata_1.PROGRAM_ID);
143
+ const [collectionMasterEdition] = web3_js_1.PublicKey.findProgramAddressSync([
144
+ Buffer.from("metadata", "utf8"),
145
+ mpl_token_metadata_1.PROGRAM_ID.toBuffer(),
146
+ collectionKey.toBuffer(),
147
+ Buffer.from("edition", "utf8"),
148
+ ], mpl_token_metadata_1.PROGRAM_ID);
149
+ const instruction = (0, mpl_token_metadata_1.createVerifyCollectionInstruction)({
150
+ metadata: metadata,
151
+ collectionAuthority: provider.wallet.publicKey,
152
+ payer: provider.wallet.publicKey,
153
+ collectionMint: collectionKey,
154
+ collection: collectionMetadataAccount,
155
+ collectionMasterEditionAccount: collectionMasterEdition,
156
+ });
157
+ instructions.push(instruction);
158
+ }
159
+ const [edition] = web3_js_1.PublicKey.findProgramAddressSync([
160
+ Buffer.from("metadata", "utf8"),
161
+ mpl_token_metadata_1.PROGRAM_ID.toBuffer(),
162
+ mintKey.toBuffer(),
163
+ Buffer.from("edition", "utf8"),
164
+ ], mpl_token_metadata_1.PROGRAM_ID);
165
+ instructions.push((0, mpl_token_metadata_1.createCreateMasterEditionV3Instruction)({
166
+ edition,
167
+ mint: mintKey,
168
+ updateAuthority: provider.wallet.publicKey,
169
+ mintAuthority: provider.wallet.publicKey,
170
+ payer: provider.wallet.publicKey,
171
+ metadata,
172
+ }, {
173
+ createMasterEditionArgs: {
174
+ maxSupply: 0,
175
+ },
176
+ }));
177
+ const tx = new web3_js_1.Transaction();
178
+ tx.add(...instructions);
179
+ try {
180
+ yield provider.sendAndConfirm(tx, [mintKeypair]);
181
+ }
182
+ catch (e) {
183
+ console.log("Error", e, e.logs);
184
+ if (e.logs) {
185
+ console.error(e.logs.join("\n"));
186
+ }
187
+ throw e;
188
+ }
189
+ return {
190
+ mintKey,
191
+ collectionKey,
192
+ };
193
+ });
194
+ }
195
+ exports.createNft = createNft;
196
+ //# sourceMappingURL=token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/token.ts"],"names":[],"mappings":"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"}