@helium/helium-admin-cli 0.9.0-alpha.1 → 0.9.0-alpha.3
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/test-many-proxies.js +119 -0
- package/lib/cjs/test-many-proxies.js.map +1 -0
- package/lib/esm/src/test-many-proxies.js +78 -0
- package/lib/esm/src/test-many-proxies.js.map +1 -0
- package/lib/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/types/src/test-many-proxies.d.ts +2 -0
- package/lib/types/src/test-many-proxies.d.ts.map +1 -0
- package/package.json +13 -13
|
@@ -0,0 +1,119 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.run = void 0;
|
|
39
|
+
const anchor = __importStar(require("@coral-xyz/anchor"));
|
|
40
|
+
const nft_proxy_sdk_1 = require("@helium/nft-proxy-sdk");
|
|
41
|
+
const spl_utils_1 = require("@helium/spl-utils");
|
|
42
|
+
const voter_stake_registry_sdk_1 = require("@helium/voter-stake-registry-sdk");
|
|
43
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
44
|
+
const os_1 = __importDefault(require("os"));
|
|
45
|
+
const yargs_1 = __importDefault(require("yargs/yargs"));
|
|
46
|
+
const utils_1 = require("./utils");
|
|
47
|
+
function run(args = process.argv) {
|
|
48
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
const yarg = (0, yargs_1.default)(args).options({
|
|
50
|
+
wallet: {
|
|
51
|
+
alias: "k",
|
|
52
|
+
describe: "Anchor wallet keypair",
|
|
53
|
+
default: `${os_1.default.homedir()}/.config/solana/id.json`,
|
|
54
|
+
},
|
|
55
|
+
url: {
|
|
56
|
+
alias: "u",
|
|
57
|
+
default: "http://127.0.0.1:8899",
|
|
58
|
+
describe: "The solana url",
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
const argv = yield yarg.argv;
|
|
62
|
+
process.env.ANCHOR_WALLET = argv.wallet;
|
|
63
|
+
process.env.ANCHOR_PROVIDER_URL = argv.url;
|
|
64
|
+
anchor.setProvider(anchor.AnchorProvider.local(argv.url));
|
|
65
|
+
const provider = anchor.getProvider();
|
|
66
|
+
const wallet = new anchor.Wallet((0, utils_1.loadKeypair)(argv.wallet));
|
|
67
|
+
const vsrProgram = yield (0, voter_stake_registry_sdk_1.init)(provider);
|
|
68
|
+
const nftProxyProgram = yield (0, nft_proxy_sdk_1.init)(provider);
|
|
69
|
+
const TOTAL_POS = 500;
|
|
70
|
+
let index = 0;
|
|
71
|
+
for (const i of new Array(TOTAL_POS).fill(0)) {
|
|
72
|
+
const mintKeypair = web3_js_1.Keypair.generate();
|
|
73
|
+
const position = (0, voter_stake_registry_sdk_1.positionKey)(mintKeypair.publicKey)[0];
|
|
74
|
+
const instructions = [];
|
|
75
|
+
const kind = { cliff: {} };
|
|
76
|
+
instructions.push(...(yield (0, spl_utils_1.createMintInstructions)(provider, 0, position, position, mintKeypair)));
|
|
77
|
+
const { pubkeys: { positionTokenAccount }, instruction: initPos, } = yield vsrProgram.methods
|
|
78
|
+
.initializePositionV0({
|
|
79
|
+
kind,
|
|
80
|
+
periods: 30,
|
|
81
|
+
})
|
|
82
|
+
.accounts({
|
|
83
|
+
// lock for 6 months
|
|
84
|
+
registrar: (0, voter_stake_registry_sdk_1.getRegistrarKey)(spl_utils_1.HNT_MINT),
|
|
85
|
+
mint: mintKeypair.publicKey,
|
|
86
|
+
depositMint: spl_utils_1.HNT_MINT,
|
|
87
|
+
recipient: wallet.publicKey,
|
|
88
|
+
})
|
|
89
|
+
.prepare();
|
|
90
|
+
instructions.push(initPos);
|
|
91
|
+
// deposit some hnt
|
|
92
|
+
instructions.push(yield vsrProgram.methods
|
|
93
|
+
.depositV0({ amount: new anchor.BN(10000) })
|
|
94
|
+
.accounts({
|
|
95
|
+
registrar: (0, voter_stake_registry_sdk_1.getRegistrarKey)(spl_utils_1.HNT_MINT),
|
|
96
|
+
position,
|
|
97
|
+
mint: spl_utils_1.HNT_MINT,
|
|
98
|
+
})
|
|
99
|
+
.instruction());
|
|
100
|
+
instructions.push(yield nftProxyProgram.methods
|
|
101
|
+
.assignProxyV0({
|
|
102
|
+
expirationTime: new anchor.BN(new Date().valueOf() / 1000 + 10000),
|
|
103
|
+
})
|
|
104
|
+
.accounts({
|
|
105
|
+
proxyConfig: (0, nft_proxy_sdk_1.proxyConfigKey)("Helium V1")[0],
|
|
106
|
+
asset: mintKeypair.publicKey,
|
|
107
|
+
recipient: new web3_js_1.PublicKey("exmrL4U6vk6VFoh3Q7fkrPbjpNLHPYFf1J8bqGypuiK"),
|
|
108
|
+
tokenAccount: positionTokenAccount,
|
|
109
|
+
voter: web3_js_1.PublicKey.default
|
|
110
|
+
})
|
|
111
|
+
.instruction());
|
|
112
|
+
yield (0, spl_utils_1.sendInstructions)(provider, instructions, [mintKeypair]);
|
|
113
|
+
index++;
|
|
114
|
+
console.log(`Sent ${index}/${TOTAL_POS}`);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
exports.run = run;
|
|
119
|
+
//# sourceMappingURL=test-many-proxies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-many-proxies.js","sourceRoot":"","sources":["../../src/test-many-proxies.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import * as anchor from "@coral-xyz/anchor";
|
|
2
|
+
import { init as initNftProxy, proxyConfigKey } from "@helium/nft-proxy-sdk";
|
|
3
|
+
import { HNT_MINT, createMintInstructions, sendInstructions } from "@helium/spl-utils";
|
|
4
|
+
import { getRegistrarKey, init as initVsr, positionKey } from "@helium/voter-stake-registry-sdk";
|
|
5
|
+
import { Keypair, PublicKey } from "@solana/web3.js";
|
|
6
|
+
import os from "os";
|
|
7
|
+
import yargs from "yargs/yargs";
|
|
8
|
+
import { loadKeypair } from "./utils";
|
|
9
|
+
export async function run(args = process.argv) {
|
|
10
|
+
const yarg = yargs(args).options({
|
|
11
|
+
wallet: {
|
|
12
|
+
alias: "k",
|
|
13
|
+
describe: "Anchor wallet keypair",
|
|
14
|
+
default: `${os.homedir()}/.config/solana/id.json`,
|
|
15
|
+
},
|
|
16
|
+
url: {
|
|
17
|
+
alias: "u",
|
|
18
|
+
default: "http://127.0.0.1:8899",
|
|
19
|
+
describe: "The solana url",
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
const argv = await yarg.argv;
|
|
23
|
+
process.env.ANCHOR_WALLET = argv.wallet;
|
|
24
|
+
process.env.ANCHOR_PROVIDER_URL = argv.url;
|
|
25
|
+
anchor.setProvider(anchor.AnchorProvider.local(argv.url));
|
|
26
|
+
const provider = anchor.getProvider();
|
|
27
|
+
const wallet = new anchor.Wallet(loadKeypair(argv.wallet));
|
|
28
|
+
const vsrProgram = await initVsr(provider);
|
|
29
|
+
const nftProxyProgram = await initNftProxy(provider);
|
|
30
|
+
const TOTAL_POS = 500;
|
|
31
|
+
let index = 0;
|
|
32
|
+
for (const i of new Array(TOTAL_POS).fill(0)) {
|
|
33
|
+
const mintKeypair = Keypair.generate();
|
|
34
|
+
const position = positionKey(mintKeypair.publicKey)[0];
|
|
35
|
+
const instructions = [];
|
|
36
|
+
const kind = { cliff: {} };
|
|
37
|
+
instructions.push(...(await createMintInstructions(provider, 0, position, position, mintKeypair)));
|
|
38
|
+
const { pubkeys: { positionTokenAccount }, instruction: initPos, } = await vsrProgram.methods
|
|
39
|
+
.initializePositionV0({
|
|
40
|
+
kind,
|
|
41
|
+
periods: 30,
|
|
42
|
+
})
|
|
43
|
+
.accounts({
|
|
44
|
+
// lock for 6 months
|
|
45
|
+
registrar: getRegistrarKey(HNT_MINT),
|
|
46
|
+
mint: mintKeypair.publicKey,
|
|
47
|
+
depositMint: HNT_MINT,
|
|
48
|
+
recipient: wallet.publicKey,
|
|
49
|
+
})
|
|
50
|
+
.prepare();
|
|
51
|
+
instructions.push(initPos);
|
|
52
|
+
// deposit some hnt
|
|
53
|
+
instructions.push(await vsrProgram.methods
|
|
54
|
+
.depositV0({ amount: new anchor.BN(10000) })
|
|
55
|
+
.accounts({
|
|
56
|
+
registrar: getRegistrarKey(HNT_MINT),
|
|
57
|
+
position,
|
|
58
|
+
mint: HNT_MINT,
|
|
59
|
+
})
|
|
60
|
+
.instruction());
|
|
61
|
+
instructions.push(await nftProxyProgram.methods
|
|
62
|
+
.assignProxyV0({
|
|
63
|
+
expirationTime: new anchor.BN(new Date().valueOf() / 1000 + 10000),
|
|
64
|
+
})
|
|
65
|
+
.accounts({
|
|
66
|
+
proxyConfig: proxyConfigKey("Helium V1")[0],
|
|
67
|
+
asset: mintKeypair.publicKey,
|
|
68
|
+
recipient: new PublicKey("exmrL4U6vk6VFoh3Q7fkrPbjpNLHPYFf1J8bqGypuiK"),
|
|
69
|
+
tokenAccount: positionTokenAccount,
|
|
70
|
+
voter: PublicKey.default
|
|
71
|
+
})
|
|
72
|
+
.instruction());
|
|
73
|
+
await sendInstructions(provider, instructions, [mintKeypair]);
|
|
74
|
+
index++;
|
|
75
|
+
console.log(`Sent ${index}/${TOTAL_POS}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=test-many-proxies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-many-proxies.js","sourceRoot":"","sources":["../../../src/test-many-proxies.ts"],"names":[],"mappings":"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"}
|