summaryrefslogtreecommitdiff
path: root/impls/monero.ts/README.md
blob: 773e8f6421dee845a67aac1295c72570c1878a7f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# monero.ts

`monero_c` bindings for Deno.

## Usage

This library does not ship with `monero_c` libraries.\
To use these bindings you have to bring your own `monero_c` libraries.\
There are at least two ways to do so:

- Ahead-of-time, during builds where you only ship necessary library for a given platform.\
  See [monero-tui](https://github.com/Im-Beast/monero-tui/blob/main/.github/workflows/dev-build.yml) build workflow as
  an example of doing so.
  ```ts
  import {
    loadDylib,
    Wallet,
    WalletManager,
  } from "https://raw.githubusercontent.com/MrCyjaneK/monero_c/master/impls/monero.ts/mod.ts";

  // Try to load dylib from the default lib/* path
  loadDylib();

  const wm = await WalletManager.new();
  const wallet = await Wallet.create(wm, "./my_wallet", "password");

  console.log(await wallet.address());

  await wallet.store();
  ```
- Just-in-time, where you download and cache the library at runtime.\
  You can use something like [plug](https://jsr.io/@denosaurs/plug) to achieve the result.
  ```ts
  import { dlopen } from "jsr:@denosaurs/plug";
  // It's recommened to put the monero.ts github link into your import_map to reduce the url clutter
  import { loadDylib, symbols, Wallet, WalletManager } from "https://raw.githubusercontent.com/MrCyjaneK/monero_c/master/impls/monero.ts/mod.ts";

  // Load dylib loaded by plug
  const lib = await dlopen(..., symbols);
  loadDylib(lib);

  const wm = await WalletManager.new();
  const wallet = await Wallet.create(wm, "./my_wallet", "password");

  console.log(await wallet.address());

  await wallet.store();
  ```