@@ -1,9 +1,10 @@
1import ob from 'urbit-ob';
1import ob from 'urbit-ob';
2import kg from 'urbit-key-generation';
2import kg from 'urbit-key-generation';
3+// @ts-expect-error no types available for more-entropy
3import * as more from 'more-entropy';
4import * as more from 'more-entropy';
4import { chunk, flatMap, zipWith } from 'lodash';
5import { chunk, flatMap, zipWith } from 'lodash';
5−import { wrap } from 'comlink';
6import { shas } from 'lib/networkCode';
6import { shas } from 'lib/networkCode';
7+import { walletgenWorker } from 'worker/';
@@ -16,13 +17,9 @@ import {
16} from './constants';
17} from './constants';
17import { stripHexPrefix } from './utils/address';
18import { stripHexPrefix } from './utils/address';
19−const WalletGenerator = wrap(
20− new Worker('src/worker/worker.ts', { type: 'module' })
23const SEED_LENGTH_BYTES = SEED_ENTROPY_BITS / 8;
20const SEED_LENGTH_BYTES = SEED_ENTROPY_BITS / 8;
25−const getTicketBitSize = point =>
22+const getTicketBitSize = (point: number) =>
26 point < MIN_STAR
23 point < MIN_STAR
27 ? GALAXY_ENTROPY_BITS
24 ? GALAXY_ENTROPY_BITS
28 : point < MIN_PLANET
25 : point < MIN_PLANET
@@ -30,7 +27,7 @@ const getTicketBitSize = point =>
30 : PLANET_ENTROPY_BITS;
27 : PLANET_ENTROPY_BITS;
32// returns a promise for a ticket string
29// returns a promise for a ticket string
33−export const makeTicket = point => {
30+export const makeTicket = (point: number): Promise<string> => {
34 const bits = getTicketBitSize(point);
31 const bits = getTicketBitSize(point);
36 const bytes = bits / 8;
33 const bytes = bits / 8;
@@ -39,7 +36,7 @@ export const makeTicket = point => {
40 const gen = new more.Generator();
37 const gen = new more.Generator();
42− return new Promise((resolve, reject) => {
39+ return new Promise<string>((resolve, reject) => {
43 gen.generate(bits, result => {
40 gen.generate(bits, result => {
44 const chunked = chunk(result, 2);
41 const chunked = chunk(result, 2);
45 const desired = chunked.slice(0, bytes); // only take required entropy
42 const desired = chunked.slice(0, bytes); // only take required entropy
@@ -53,7 +50,7 @@ export const makeTicket = point => {
56−export const makeDeterministicTicket = (point, seed) => {
53+export const makeDeterministicTicket = (point: number, seed: string) => {
57 const bits = getTicketBitSize(point);
54 const bits = getTicketBitSize(point);
59 const bytes = bits / 8;
56 const bytes = bits / 8;
@@ -71,7 +68,7 @@ export const makeDeterministicTicket = (point, seed) => {
73// return a wallet object
70// return a wallet object
74−export const generateWallet = async (point, ticket, boot, revision = 0) => {
71+export const generateWallet = async (point: number, ticket: string, boot: boolean, revision = 0) => {
75 const config = {
72 const config = {
76 ticket: ticket,
73 ticket: ticket,
77 seedSize: SEED_LENGTH_BYTES,
74 seedSize: SEED_LENGTH_BYTES,
@@ -88,7 +85,7 @@ export const generateWallet = async (point, ticket, boot, revision = 0) => {
88 return new Promise(async (resolve, reject) => {
85 return new Promise(async (resolve, reject) => {
89 // Use a web worker to process the data
86 // Use a web worker to process the data
91− const processed = await WalletGenerator.generateWallet(JSON.stringify(config));
88+ const processed = await walletgenWorker.generate(JSON.stringify(config));
92 resolve(processed);
89 resolve(processed);
93 } catch (error) {
90 } catch (error) {
94 reject(error);
91 reject(error);
@@ -96,23 +93,23 @@ export const generateWallet = async (point, ticket, boot, revision = 0) => {
99−export const generateOwnershipWallet = async (ship, ticket) => {
96+export const generateOwnershipWallet = async (ship: number, ticket: string) => {
100 return kg.generateOwnershipWallet({ ship, ticket });
97 return kg.generateOwnershipWallet({ ship, ticket });
103// temporary wallets need to be derivable from just the ticket,
100// temporary wallets need to be derivable from just the ticket,
104// so we always use ~zod as the wallet point.
101// so we always use ~zod as the wallet point.
105−export const generateTemporaryOwnershipWallet = ticket =>
102+export const generateTemporaryOwnershipWallet = (ticket: string) =>
106 generateOwnershipWallet(ZOD, ticket);
103 generateOwnershipWallet(ZOD, ticket);
108−export const generateTemporaryTicketAndWallet = async point => {
105+export const generateTemporaryTicketAndWallet = async (point: number) => {
109 const ticket = await makeTicket(point);
106 const ticket = await makeTicket(point);
110 const owner = await generateOwnershipWallet(ZOD, ticket);
107 const owner = await generateOwnershipWallet(ZOD, ticket);
112 return { ticket, owner };
109 return { ticket, owner };
115−export const generateTemporaryDeterministicWallet = async (point, seed) => {
112+export const generateTemporaryDeterministicWallet = async (point: number, seed: string) => {
116 const ticket = makeDeterministicTicket(point, seed);
113 const ticket = makeDeterministicTicket(point, seed);
117 const owner = await generateOwnershipWallet(ZOD, ticket);
114 const owner = await generateOwnershipWallet(ZOD, ticket);