@cubist-labs/cubesigner-sdk 0.1.23

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 (64) hide show
  1. package/LICENSE-APACHE +177 -0
  2. package/LICENSE-MIT +25 -0
  3. package/NOTICE +13 -0
  4. package/README.md +470 -0
  5. package/dist/examples/ethers.d.ts +1 -0
  6. package/dist/examples/ethers.js +142 -0
  7. package/dist/spec/env/beta.json +9 -0
  8. package/dist/spec/env/gamma.json +9 -0
  9. package/dist/spec/env/prod.json +9 -0
  10. package/dist/src/client.d.ts +10 -0
  11. package/dist/src/client.js +21 -0
  12. package/dist/src/env.d.ts +15 -0
  13. package/dist/src/env.js +35 -0
  14. package/dist/src/ethers/index.d.ts +50 -0
  15. package/dist/src/ethers/index.js +122 -0
  16. package/dist/src/index.d.ts +114 -0
  17. package/dist/src/index.js +205 -0
  18. package/dist/src/key.d.ts +114 -0
  19. package/dist/src/key.js +201 -0
  20. package/dist/src/mfa.d.ts +23 -0
  21. package/dist/src/mfa.js +63 -0
  22. package/dist/src/org.d.ts +161 -0
  23. package/dist/src/org.js +264 -0
  24. package/dist/src/role.d.ts +224 -0
  25. package/dist/src/role.js +256 -0
  26. package/dist/src/schema.d.ts +3049 -0
  27. package/dist/src/schema.js +7 -0
  28. package/dist/src/session/generic.d.ts +47 -0
  29. package/dist/src/session/generic.js +3 -0
  30. package/dist/src/session/management_session_manager.d.ts +59 -0
  31. package/dist/src/session/management_session_manager.js +111 -0
  32. package/dist/src/session/oidc_session_manager.d.ts +78 -0
  33. package/dist/src/session/oidc_session_manager.js +142 -0
  34. package/dist/src/session/session_manager.d.ts +74 -0
  35. package/dist/src/session/session_manager.js +79 -0
  36. package/dist/src/session/session_storage.d.ts +47 -0
  37. package/dist/src/session/session_storage.js +76 -0
  38. package/dist/src/session/signer_session_manager.d.ts +88 -0
  39. package/dist/src/session/signer_session_manager.js +159 -0
  40. package/dist/src/sign.d.ts +114 -0
  41. package/dist/src/sign.js +248 -0
  42. package/dist/src/signer_session.d.ts +180 -0
  43. package/dist/src/signer_session.js +369 -0
  44. package/dist/src/util.d.ts +35 -0
  45. package/dist/src/util.js +75 -0
  46. package/dist/test/sessions.d.ts +35 -0
  47. package/dist/test/sessions.js +56 -0
  48. package/package.json +61 -0
  49. package/src/client.ts +12 -0
  50. package/src/env.ts +25 -0
  51. package/src/ethers/index.ts +131 -0
  52. package/src/index.ts +220 -0
  53. package/src/key.ts +249 -0
  54. package/src/org.ts +333 -0
  55. package/src/role.ts +385 -0
  56. package/src/schema.ts +3054 -0
  57. package/src/session/management_session_manager.ts +136 -0
  58. package/src/session/oidc_session_manager.ts +193 -0
  59. package/src/session/session_manager.ts +114 -0
  60. package/src/session/session_storage.ts +73 -0
  61. package/src/session/signer_session_manager.ts +211 -0
  62. package/src/signer_session.ts +464 -0
  63. package/src/util.ts +58 -0
  64. package/tsconfig.json +32 -0
@@ -0,0 +1,142 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const cs = __importStar(require("../src/index"));
27
+ const ethers_1 = require("ethers");
28
+ const WALLET_ADDRESS = env("WALLET_ADDRESS");
29
+ const RECIPIENT = env("RECIPIENT");
30
+ const RPC_PROVIDER = env("RPC_PROVIDER", "https://rpc.ankr.com/eth_goerli");
31
+ const AMOUNT = ethers_1.ethers.parseEther(env("AMOUNT", "0.0000001"));
32
+ const CUBE_SIGNER_TOKEN = env("CUBE_SIGNER_TOKEN", null /* load from fs */);
33
+ // create like CUBE_SIGNER_TOKEN=$(cs token create ... --output base64)
34
+ /** Main entry point */
35
+ async function main() {
36
+ // If token is passed via env variable, decode and parse it,
37
+ // otherwise just load token from default filesystem location.
38
+ const memStorage = CUBE_SIGNER_TOKEN
39
+ ? new cs.MemorySessionStorage(JSON.parse(atob(CUBE_SIGNER_TOKEN)))
40
+ : undefined;
41
+ // Load signer session
42
+ const signerSession = await cs.CubeSigner.loadSignerSession(memStorage);
43
+ const provider = new ethers_1.ethers.JsonRpcProvider(RPC_PROVIDER);
44
+ const signer = new EthersCubeSinger(WALLET_ADDRESS, signerSession, provider);
45
+ // get balance
46
+ const addr = await signer.getAddress();
47
+ console.log(`${addr} has ${await provider.getBalance(addr)} gwei`);
48
+ console.log(`Transferring ${AMOUNT} wei from ${addr} to ${RECIPIENT}...`);
49
+ const tx = {
50
+ to: RECIPIENT,
51
+ value: AMOUNT,
52
+ };
53
+ const response = await signer.sendTransaction(tx);
54
+ await response.wait();
55
+ // get new balance
56
+ console.log(`${addr} has ${await provider.getBalance(addr)} gwei`);
57
+ }
58
+ main().catch((err) => {
59
+ console.error(err);
60
+ process.exit(1);
61
+ });
62
+ /**
63
+ * A bare-bones ethers.Signer implementation that uses EthersCubeSinger to sign transactions.
64
+ */
65
+ class EthersCubeSinger extends ethers_1.ethers.AbstractSigner {
66
+ /** Create new EthersCubeSinger ethers.Signer instance
67
+ * @param {string} address The address of the account touser.
68
+ * @param {cs.SignerSession<cs.SignerSessionObject>} signerSession The underlying EthersCubeSinger session.
69
+ * @param {null | ethers.Provider} provider The optional provider instance to use.
70
+ */
71
+ constructor(address, signerSession, provider) {
72
+ super(provider);
73
+ this.address = address;
74
+ this.signerSession = signerSession;
75
+ }
76
+ /** Resolves to the signer address. */
77
+ async getAddress() {
78
+ return this.address;
79
+ }
80
+ /**
81
+ * Returns the signer connected to %%provider%%.
82
+ * @param {null | ethers.Provider} provider The optional provider instance to use.
83
+ * @return {EthersCubeSinger} The signer connected to signer.
84
+ */
85
+ connect(provider) {
86
+ return new EthersCubeSinger(this.address, this.signerSession, provider);
87
+ }
88
+ /**
89
+ * Signs a transaction.
90
+ * @param {ethers.TransactionRequest} tx The transaction to sign.
91
+ * @return {Promise<string>} The signature.
92
+ */
93
+ async signTransaction(tx) {
94
+ // get the chain id from the network or tx
95
+ let chainId = tx.chainId;
96
+ if (chainId === undefined) {
97
+ const network = await this.provider?.getNetwork();
98
+ const id = network?.chainId;
99
+ if (id === undefined) {
100
+ throw new Error("Missing chainId");
101
+ }
102
+ chainId = id.toString();
103
+ }
104
+ // Convert the transaction into a JSON-RPC transaction
105
+ const rpcTx = this.provider instanceof ethers_1.JsonRpcApiProvider
106
+ ? this.provider.getRpcTransaction(tx)
107
+ : // We can just call the getRpcTransaction with a
108
+ // null receiver since it doesn't actually use it
109
+ // (and really should be declared static).
110
+ ethers_1.JsonRpcApiProvider.prototype.getRpcTransaction.call(null, tx);
111
+ rpcTx.type = (0, ethers_1.toBeHex)(tx.type ?? 0x02, 1); // we expect 0x0[0-2]
112
+ const req = {
113
+ chain_id: Number(chainId),
114
+ tx: rpcTx,
115
+ };
116
+ const sig = await this.signerSession.signEth1(this.address, req);
117
+ return sig.data().rlp_signed_tx;
118
+ }
119
+ /** Signs arbitrary message. Not yet implemented. */
120
+ async signMessage() {
121
+ throw new Error("Method not implemented.");
122
+ }
123
+ /** Signs typed data. Not yet implemented. */
124
+ signTypedData() {
125
+ throw new Error("Method not implemented.");
126
+ }
127
+ }
128
+ /**
129
+ * Returns the value of the environment variable.
130
+ * @param {string} name The name of the environment variable.
131
+ * @param {string} fallback The optional fallback value.
132
+ * @return {string} The value of the environment variable, the fallback, or undefined.
133
+ * @throws {Error} If the environment variable is not set and no fallback is provided.
134
+ */
135
+ function env(name, fallback) {
136
+ const val = process.env[name] ?? fallback;
137
+ if (val === undefined) {
138
+ throw new Error(`Missing environment variable ${name}`);
139
+ }
140
+ return val;
141
+ }
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vZXhhbXBsZXMvZXRoZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBbUM7QUFDbkMsbUNBQTZEO0FBRTdELE1BQU0sY0FBYyxHQUFXLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBRSxDQUFDO0FBQ3RELE1BQU0sU0FBUyxHQUFXLEdBQUcsQ0FBQyxXQUFXLENBQUUsQ0FBQztBQUM1QyxNQUFNLFlBQVksR0FBVyxHQUFHLENBQUMsY0FBYyxFQUFFLGlDQUFpQyxDQUFFLENBQUM7QUFDckYsTUFBTSxNQUFNLEdBQVcsZUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBRSxDQUFDLENBQUM7QUFDdEUsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDNUUsdUVBQXVFO0FBRXZFLHVCQUF1QjtBQUN2QixLQUFLLFVBQVUsSUFBSTtJQUNqQiw0REFBNEQ7SUFDNUQsOERBQThEO0lBQzlELE1BQU0sVUFBVSxHQUFHLGlCQUFpQjtRQUNsQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDZCxzQkFBc0I7SUFDdEIsTUFBTSxhQUFhLEdBQUcsTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXhFLE1BQU0sUUFBUSxHQUFHLElBQUksZUFBTSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMxRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFD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QUF1QjtZQUM5QixRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUN6QixFQUFFLEVBQUUsS0FBSztTQUNWLENBQUM7UUFDRixNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDakUsT0FBTyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxvREFBb0Q7SUFDcEQsS0FBSyxDQUFDLFdBQVc7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELDZDQUE2QztJQUM3QyxhQUFhO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQUVEOzs7Ozs7R0FNRztBQUNILFNBQVMsR0FBRyxDQUFDLElBQVksRUFBRSxRQUF3QjtJQUNqRCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQztJQUMxQyxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFDckIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsSUFBSSxFQUFFLENBQUMsQ0FBQztLQUN6RDtJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNzIGZyb20gXCIuLi9zcmMvaW5kZXhcIjtcbmltcG9ydCB7IEpzb25ScGNBcGlQcm92aWRlciwgZXRoZXJzLCB0b0JlSGV4IH0gZnJvbSBcImV0aGVyc1wiO1xuXG5jb25zdCBXQUxMRVRfQUREUkVTUzogc3RyaW5nID0gZW52KFwiV0FMTEVUX0FERFJFU1NcIikhO1xuY29uc3QgUkVDSVBJRU5UOiBzdHJpbmcgPSBlbnYoXCJSRUNJUElFTlRcIikhO1xuY29uc3QgUlBDX1BST1ZJREVSOiBzdHJpbmcgPSBlbnYoXCJSUENfUFJPVklERVJcIiwgXCJodHRwczovL3JwYy5hbmtyLmNvbS9ldGhfZ29lcmxpXCIpITtcbmNvbnN0IEFNT1VOVDogYmlnaW50ID0gZXRoZXJzLnBhcnNlRXRoZXIoZW52KFwiQU1PVU5UXCIsIFwiMC4wMDAwMDAxXCIpISk7XG5jb25zdCBDVUJFX1NJR05FUl9UT0tFTiA9IGVudihcIkNVQkVfU0lHTkVSX1RPS0VOXCIsIG51bGwgLyogbG9hZCBmcm9tIGZzICovKTtcbi8vIGNyZWF0ZSBsaWtlIENVQkVfU0lHTkVSX1RPS0VOPSQoY3MgdG9rZW4gY3JlYXRlIC4uLiAtLW91dHB1dCBiYXNlNjQpXG5cbi8qKiBNYWluIGVudHJ5IHBvaW50ICovXG5hc3luYyBmdW5jdGlvbiBtYWluKCkge1xuICAvLyBJZiB0b2tlbiBpcyBwYXNzZWQgdmlhIGVudiB2YXJpYWJsZSwgZGVjb2RlIGFuZCBwYXJzZSBpdCxcbiAgLy8gb3RoZXJ3aXNlIGp1c3QgbG9hZCB0b2tlbiBmcm9tIGRlZmF1bHQgZmlsZXN5c3RlbSBsb2NhdGlvbi5cbiAgY29uc3QgbWVtU3RvcmFnZSA9IENVQkVfU0lHTkVSX1RPS0VOXG4gICAgPyBuZXcgY3MuTWVtb3J5U2Vzc2lvblN0b3JhZ2UoSlNPTi5wYXJzZShhdG9iKENVQkVfU0lHTkVSX1RPS0VOKSkpXG4gICAgOiB1bmRlZmluZWQ7XG4gIC8vIExvYWQgc2lnbmVyIHNlc3Npb25cbiAgY29uc3Qgc2lnbmVyU2Vzc2lvbiA9IGF3YWl0IGNzLkN1YmVTaWduZXIubG9hZFNpZ25lclNlc3Npb24obWVtU3RvcmFnZSk7XG5cbiAgY29uc3QgcHJvdmlkZXIgPSBuZXcgZXRoZXJzLkpzb25ScGNQcm92aWRlcihSUENfUFJPVklERVIpO1xuICBjb25zdCBzaWduZXIgPSBuZXcgRXRoZXJzQ3ViZVNpbmdlcihXQUxMRVRfQUREUkVTUywgc2lnbmVyU2Vzc2lvbiwgcHJvdmlkZXIpO1xuXG4gIC8vIGdldCBiYWxhbmNlXG4gIGNvbnN0IGFkZHIgPSBhd2FpdCBzaWduZXIuZ2V0QWRkcmVzcygpO1xuICBjb25zb2xlLmxvZyhgJHthZGRyfSBoYXMgJHthd2FpdCBwcm92aWRlci5nZXRCYWxhbmNlKGFkZHIpfSBnd2VpYCk7XG5cbiAgY29uc29sZS5sb2coYFRyYW5zZmVycmluZyAke0FNT1VOVH0gd2VpIGZyb20gJHthZGRyfSB0byAke1JFQ0lQSUVOVH0uLi5gKTtcblxuICBjb25zdCB0eCA9IHtcbiAgICB0bzogUkVDSVBJRU5ULFxuICAgIHZhbHVlOiBBTU9VTlQsXG4gIH07XG5cbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzaWduZXIuc2VuZFRyYW5zYWN0aW9uKHR4KTtcbiAgYXdhaXQgcmVzcG9uc2Uud2FpdCgpO1xuXG4gIC8vIGdldCBuZXcgYmFsYW5jZVxuICBjb25zb2xlLmxvZyhgJHthZGRyfSBoYXMgJHthd2FpdCBwcm92aWRlci5nZXRCYWxhbmNlKGFkZHIpfSBnd2VpYCk7XG59XG5cbm1haW4oKS5jYXRjaCgoZXJyOiBFcnJvcikgPT4ge1xuICBjb25zb2xlLmVycm9yKGVycik7XG4gIHByb2Nlc3MuZXhpdCgxKTtcbn0pO1xuXG4vKipcbiAqIEEgYmFyZS1ib25lcyBldGhlcnMuU2lnbmVyIGltcGxlbWVudGF0aW9uIHRoYXQgdXNlcyBFdGhlcnNDdWJlU2luZ2VyIHRvIHNpZ24gdHJhbnNhY3Rpb25zLlxuICovXG5jbGFzcyBFdGhlcnNDdWJlU2luZ2VyIGV4dGVuZHMgZXRoZXJzLkFic3RyYWN0U2lnbmVyIHtcbiAgLyoqIFRoZSBhZGRyZXNzIG9mIHRoZSBhY2NvdW50ICovXG4gIHJlYWRvbmx5IGFkZHJlc3MhOiBzdHJpbmc7XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIEV0aGVyc0N1YmVTaW5nZXIgc2Vzc2lvbiAqL1xuICByZWFkb25seSBzaWduZXJTZXNzaW9uITogY3MuU2lnbmVyU2Vzc2lvbjtcblxuICAvKiogQ3JlYXRlIG5ldyBFdGhlcnNDdWJlU2luZ2VyIGV0aGVycy5TaWduZXIgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgVGhlIGFkZHJlc3Mgb2YgdGhlIGFjY291bnQgdG91c2VyLlxuICAgKiBAcGFyYW0ge2NzLlNpZ25lclNlc3Npb248Y3MuU2lnbmVyU2Vzc2lvbk9iamVjdD59IHNpZ25lclNlc3Npb24gVGhlIHVuZGVybHlpbmcgRXRoZXJzQ3ViZVNpbmdlciBzZXNzaW9uLlxuICAgKiBAcGFyYW0ge251bGwgfCBldGhlcnMuUHJvdmlkZXJ9IHByb3ZpZGVyIFRoZSBvcHRpb25hbCBwcm92aWRlciBpbnN0YW5jZSB0byB1c2UuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhZGRyZXNzOiBzdHJpbmcsIHNpZ25lclNlc3Npb246IGNzLlNpZ25lclNlc3Npb24sIHByb3ZpZGVyPzogbnVsbCB8IGV0aGVycy5Qcm92aWRlcikge1xuICAgIHN1cGVyKHByb3ZpZGVyKTtcbiAgICB0aGlzLmFkZHJlc3MgPSBhZGRyZXNzO1xuICAgIHRoaXMuc2lnbmVyU2Vzc2lvbiA9IHNpZ25lclNlc3Npb247XG4gIH1cblxuICAvKiogUmVzb2x2ZXMgdG8gdGhlIHNpZ25lciBhZGRyZXNzLiAqL1xuICBhc3luYyBnZXRBZGRyZXNzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzcztcbiAgfVxuXG4gIC8qKlxuICAgKiAgUmV0dXJucyB0aGUgc2lnbmVyIGNvbm5lY3RlZCB0byAlJXByb3ZpZGVyJSUuXG4gICAqICBAcGFyYW0ge251bGwgfCBldGhlcnMuUHJvdmlkZXJ9IHByb3ZpZGVyIFRoZSBvcHRpb25hbCBwcm92aWRlciBpbnN0YW5jZSB0byB1c2UuXG4gICAqICBAcmV0dXJuIHtFdGhlcnNDdWJlU2luZ2VyfSBUaGUgc2lnbmVyIGNvbm5lY3RlZCB0byBzaWduZXIuXG4gICAqL1xuICBjb25uZWN0KHByb3ZpZGVyOiBudWxsIHwgZXRoZXJzLlByb3ZpZGVyKTogRXRoZXJzQ3ViZVNpbmdlciB7XG4gICAgcmV0dXJuIG5ldyBFdGhlcnNDdWJlU2luZ2VyKHRoaXMuYWRkcmVzcywgdGhpcy5zaWduZXJTZXNzaW9uLCBwcm92aWRlcik7XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgYSB0cmFuc2FjdGlvbi5cbiAgICogQHBhcmFtIHtldGhlcnMuVHJhbnNhY3Rpb25SZXF1ZXN0fSB0eCBUaGUgdHJhbnNhY3Rpb24gdG8gc2lnbi5cbiAgICogQHJldHVybiB7UHJvbWlzZTxzdHJpbmc+fSBUaGUgc2lnbmF0dXJlLlxuICAgKi9cbiAgYXN5bmMgc2lnblRyYW5zYWN0aW9uKHR4OiBldGhlcnMuVHJhbnNhY3Rpb25SZXF1ZXN0KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAvLyBnZXQgdGhlIGNoYWluIGlkIGZyb20gdGhlIG5ldHdvcmsgb3IgdHhcbiAgICBsZXQgY2hhaW5JZCA9IHR4LmNoYWluSWQ7XG4gICAgaWYgKGNoYWluSWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgbmV0d29yayA9IGF3YWl0IHRoaXMucHJvdmlkZXI/LmdldE5ldHdvcmsoKTtcbiAgICAgIGNvbnN0IGlkID0gbmV0d29yaz8uY2hhaW5JZDtcbiAgICAgIGlmIChpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgY2hhaW5JZFwiKTtcbiAgICAgIH1cbiAgICAgIGNoYWluSWQgPSBpZC50b1N0cmluZygpO1xuICAgIH1cblxuICAgIC8vIENvbnZlcnQgdGhlIHRyYW5zYWN0aW9uIGludG8gYSBKU09OLVJQQyB0cmFuc2FjdGlvblxuICAgIGNvbnN0IHJwY1R4ID1cbiAgICAgIHRoaXMucHJvdmlkZXIgaW5zdGFuY2VvZiBKc29uUnBjQXBpUHJvdmlkZXJcbiAgICAgICAgPyB0aGlzLnByb3ZpZGVyLmdldFJwY1RyYW5zYWN0aW9uKHR4KVxuICAgICAgICA6IC8vIFdlIGNhbiBqdXN0IGNhbGwgdGhlIGdldFJwY1RyYW5zYWN0aW9uIHdpdGggYVxuICAgICAgICAgIC8vIG51bGwgcmVjZWl2ZXIgc2luY2UgaXQgZG9lc24ndCBhY3R1YWxseSB1c2UgaXRcbiAgICAgICAgICAvLyAoYW5kIHJlYWxseSBzaG91bGQgYmUgZGVjbGFyZWQgc3RhdGljKS5cbiAgICAgICAgICBKc29uUnBjQXBpUHJvdmlkZXIucHJvdG90eXBlLmdldFJwY1RyYW5zYWN0aW9uLmNhbGwobnVsbCwgdHgpO1xuICAgIHJwY1R4LnR5cGUgPSB0b0JlSGV4KHR4LnR5cGUgPz8gMHgwMiwgMSk7IC8vIHdlIGV4cGVjdCAweDBbMC0yXVxuXG4gICAgY29uc3QgcmVxID0gPGNzLkV0aDFTaWduUmVxdWVzdD57XG4gICAgICBjaGFpbl9pZDogTnVtYmVyKGNoYWluSWQpLFxuICAgICAgdHg6IHJwY1R4LFxuICAgIH07XG4gICAgY29uc3Qgc2lnID0gYXdhaXQgdGhpcy5zaWduZXJTZXNzaW9uLnNpZ25FdGgxKHRoaXMuYWRkcmVzcywgcmVxKTtcbiAgICByZXR1cm4gc2lnLmRhdGEoKS5ybHBfc2lnbmVkX3R4O1xuICB9XG5cbiAgLyoqIFNpZ25zIGFyYml0cmFyeSBtZXNzYWdlLiBOb3QgeWV0IGltcGxlbWVudGVkLiAqL1xuICBhc3luYyBzaWduTWVzc2FnZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICB9XG5cbiAgLyoqIFNpZ25zIHR5cGVkIGRhdGEuIE5vdCB5ZXQgaW1wbGVtZW50ZWQuICovXG4gIHNpZ25UeXBlZERhdGEoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBmYWxsYmFjayBUaGUgb3B0aW9uYWwgZmFsbGJhY2sgdmFsdWUuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUsIHRoZSBmYWxsYmFjaywgb3IgdW5kZWZpbmVkLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0IGFuZCBubyBmYWxsYmFjayBpcyBwcm92aWRlZC5cbiAqL1xuZnVuY3Rpb24gZW52KG5hbWU6IHN0cmluZywgZmFsbGJhY2s/OiBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IHZhbCA9IHByb2Nlc3MuZW52W25hbWVdID8/IGZhbGxiYWNrO1xuICBpZiAodmFsID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgJHtuYW1lfWApO1xuICB9XG4gIHJldHVybiB2YWw7XG59XG4iXX0=
@@ -0,0 +1,9 @@
1
+ {
2
+ "Dev-CubeSignerStack": {
3
+ "ClientId": "405mhvv13llufju1ruvnq42rdc",
4
+ "LongLivedClientId": "6he1bnm17s0dv8bb4hjim6fs6i",
5
+ "Region": "us-east-1",
6
+ "UserPoolId": "us-east-1_79ljlRRfX",
7
+ "SignerApiRoot": "https://beta.signer.cubist.dev"
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "Dev-CubeSignerStack": {
3
+ "ClientId": "1tiou9ecj058khiidmhj4ds4rj",
4
+ "LongLivedClientId": "4jiuai7mtl5164of3drmvej234",
5
+ "Region": "us-east-1",
6
+ "UserPoolId": "us-east-1_RU7HEslOW",
7
+ "SignerApiRoot": "https://gamma.signer.cubist.dev"
8
+ }
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "Dev-CubeSignerStack": {
3
+ "ClientId": "2saesgbmeu8p981sk33sr6nq1j",
4
+ "LongLivedClientId": "79qoe43lbiphd7jv0emqadtoia",
5
+ "Region": "us-east-1",
6
+ "UserPoolId": "us-east-1_lLLal8vGd",
7
+ "SignerApiRoot": "https://prod.signer.cubist.dev"
8
+ }
9
+ }
@@ -0,0 +1,10 @@
1
+ import createClient from "openapi-fetch";
2
+ import { paths } from "./schema";
3
+ /** Type of http client.
4
+ * @internal
5
+ * */
6
+ export type Client = ReturnType<typeof createClient<paths>>;
7
+ /** Re-export schema.
8
+ * @internal
9
+ * */
10
+ export * from "./schema";
@@ -0,0 +1,21 @@
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
+ /** Re-export schema.
18
+ * @internal
19
+ * */
20
+ __exportStar(require("./schema"), exports);
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBUUE7O0tBRUs7QUFDTCwyQ0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY3JlYXRlQ2xpZW50IGZyb20gXCJvcGVuYXBpLWZldGNoXCI7XG5pbXBvcnQgeyBwYXRocyB9IGZyb20gXCIuL3NjaGVtYVwiO1xuXG4vKiogVHlwZSBvZiBodHRwIGNsaWVudC5cbiAqIEBpbnRlcm5hbFxuICogKi9cbmV4cG9ydCB0eXBlIENsaWVudCA9IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUNsaWVudDxwYXRocz4+O1xuXG4vKiogUmUtZXhwb3J0IHNjaGVtYS5cbiAqIEBpbnRlcm5hbFxuICogKi9cbmV4cG9ydCAqIGZyb20gXCIuL3NjaGVtYVwiO1xuIl19
@@ -0,0 +1,15 @@
1
+ export type Environment =
2
+ /** Production environment */
3
+ "prod"
4
+ /** Gamma, staging environment */
5
+ | "gamma"
6
+ /** Beta, development environment */
7
+ | "beta";
8
+ export interface EnvInterface {
9
+ ClientId: string;
10
+ LongLivedClientId: string;
11
+ Region: string;
12
+ UserPoolId: string;
13
+ SignerApiRoot: string;
14
+ }
15
+ export declare const envs: Record<Environment, EnvInterface>;
@@ -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 __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
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.envs = void 0;
27
+ const prodSpec = __importStar(require("../spec/env/prod.json"));
28
+ const gammaSpec = __importStar(require("../spec/env/gamma.json"));
29
+ const betaSpec = __importStar(require("../spec/env/beta.json"));
30
+ exports.envs = {
31
+ prod: prodSpec["Dev-CubeSignerStack"],
32
+ gamma: gammaSpec["Dev-CubeSignerStack"],
33
+ beta: betaSpec["Dev-CubeSignerStack"],
34
+ };
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vudi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdFQUFrRDtBQUNsRCxrRUFBb0Q7QUFDcEQsZ0VBQWtEO0FBa0JyQyxRQUFBLElBQUksR0FBc0M7SUFDckQsSUFBSSxFQUFFLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQztJQUNyQyxLQUFLLEVBQUUsU0FBUyxDQUFDLHFCQUFxQixDQUFDO0lBQ3ZDLElBQUksRUFBRSxRQUFRLENBQUMscUJBQXFCLENBQUM7Q0FDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHByb2RTcGVjIGZyb20gXCIuLi9zcGVjL2Vudi9wcm9kLmpzb25cIjtcbmltcG9ydCAqIGFzIGdhbW1hU3BlYyBmcm9tIFwiLi4vc3BlYy9lbnYvZ2FtbWEuanNvblwiO1xuaW1wb3J0ICogYXMgYmV0YVNwZWMgZnJvbSBcIi4uL3NwZWMvZW52L2JldGEuanNvblwiO1xuXG5leHBvcnQgdHlwZSBFbnZpcm9ubWVudCA9XG4gIC8qKiBQcm9kdWN0aW9uIGVudmlyb25tZW50ICovXG4gIHwgXCJwcm9kXCJcbiAgLyoqIEdhbW1hLCBzdGFnaW5nIGVudmlyb25tZW50ICovXG4gIHwgXCJnYW1tYVwiXG4gIC8qKiBCZXRhLCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCAqL1xuICB8IFwiYmV0YVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudkludGVyZmFjZSB7XG4gIENsaWVudElkOiBzdHJpbmc7XG4gIExvbmdMaXZlZENsaWVudElkOiBzdHJpbmc7XG4gIFJlZ2lvbjogc3RyaW5nO1xuICBVc2VyUG9vbElkOiBzdHJpbmc7XG4gIFNpZ25lckFwaVJvb3Q6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGVudnM6IFJlY29yZDxFbnZpcm9ubWVudCwgRW52SW50ZXJmYWNlPiA9IHtcbiAgcHJvZDogcHJvZFNwZWNbXCJEZXYtQ3ViZVNpZ25lclN0YWNrXCJdLFxuICBnYW1tYTogZ2FtbWFTcGVjW1wiRGV2LUN1YmVTaWduZXJTdGFja1wiXSxcbiAgYmV0YTogYmV0YVNwZWNbXCJEZXYtQ3ViZVNpZ25lclN0YWNrXCJdLFxufTtcbiJdfQ==
@@ -0,0 +1,50 @@
1
+ import { TypedDataDomain, TypedDataField, ethers } from "ethers";
2
+ import { SignerSession } from "../signer_session";
3
+ /**
4
+ * A ethers.js Signer using CubeSigner
5
+ */
6
+ export declare class Signer extends ethers.AbstractSigner {
7
+ #private;
8
+ /** Create new Signer instance
9
+ * @param {string} address The address of the account to use.
10
+ * @param {SignerSession} signerSession The underlying Signer session.
11
+ * @param {null | ethers.Provider} provider The optional provider instance to use.
12
+ */
13
+ constructor(address: string, signerSession: SignerSession, provider?: null | ethers.Provider);
14
+ /** Resolves to the signer address. */
15
+ getAddress(): Promise<string>;
16
+ /**
17
+ * Returns the signer connected to %%provider%%.
18
+ * @param {null | ethers.Provider} provider The optional provider instance to use.
19
+ * @return {Signer} The signer connected to signer.
20
+ */
21
+ connect(provider: null | ethers.Provider): Signer;
22
+ /**
23
+ * Signs a transaction. This populates the transaction type to `0x02` (EIP-1559) unless set.
24
+ * @param {ethers.TransactionRequest} tx The transaction to sign.
25
+ * @return {Promise<string>} Hex-encoded RLP encoding of the transaction and its signature.
26
+ */
27
+ signTransaction(tx: ethers.TransactionRequest): Promise<string>;
28
+ /** Signs arbitrary messages. This uses ethers.js's [hashMessage](https://docs.ethers.org/v6/api/hashing/#hashMessage)
29
+ * to compute the EIP-191 digest and signs this digest using {@link Key#signBlob}.
30
+ * The key (for this session) must have the `"AllowRawBlobSigning"` policy attached.
31
+ * @param {string | Uint8Array} message The message to sign.
32
+ * @return {Promise<string>} The signature.
33
+ */
34
+ signMessage(message: string | Uint8Array): Promise<string>;
35
+ /** Signs EIP-712 typed data. This uses ethers.js's
36
+ * [TypedDataEncoder.hash](https://docs.ethers.org/v6/api/hashing/#TypedDataEncoder_hash)
37
+ * to compute the EIP-712 digest and signs this digest using {@link Key#signBlob}.
38
+ * The key (for this session) must have the `"AllowRawBlobSigning"` policy attached.
39
+ * @param {TypedDataDomain} domain The domain of the typed data.
40
+ * @param {Record<string, Array<TypedDataField>>} types The types of the typed data.
41
+ * @param {Record<string, any>} value The value of the typed data.
42
+ * @return {Promise<string>} The signature.
43
+ */
44
+ signTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): Promise<string>;
45
+ /** Sign arbitrary digest. This uses {@link Key#signBlob}.
46
+ * @param {string} digest The digest to sign.
47
+ * @return {Promise<string>} The signature.
48
+ */
49
+ private signBlob;
50
+ }
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _Signer_address, _Signer_key, _Signer_signerSession;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.Signer = void 0;
16
+ const ethers_1 = require("ethers");
17
+ /**
18
+ * A ethers.js Signer using CubeSigner
19
+ */
20
+ class Signer extends ethers_1.ethers.AbstractSigner {
21
+ /** Create new Signer instance
22
+ * @param {string} address The address of the account to use.
23
+ * @param {SignerSession} signerSession The underlying Signer session.
24
+ * @param {null | ethers.Provider} provider The optional provider instance to use.
25
+ */
26
+ constructor(address, signerSession, provider) {
27
+ super(provider);
28
+ /** The address of the account */
29
+ _Signer_address.set(this, void 0);
30
+ /** The key to use for signing */
31
+ _Signer_key.set(this, void 0);
32
+ /** The underlying session */
33
+ _Signer_signerSession.set(this, void 0);
34
+ __classPrivateFieldSet(this, _Signer_address, address, "f");
35
+ __classPrivateFieldSet(this, _Signer_signerSession, signerSession, "f");
36
+ }
37
+ /** Resolves to the signer address. */
38
+ async getAddress() {
39
+ return __classPrivateFieldGet(this, _Signer_address, "f");
40
+ }
41
+ /**
42
+ * Returns the signer connected to %%provider%%.
43
+ * @param {null | ethers.Provider} provider The optional provider instance to use.
44
+ * @return {Signer} The signer connected to signer.
45
+ */
46
+ connect(provider) {
47
+ return new Signer(__classPrivateFieldGet(this, _Signer_address, "f"), __classPrivateFieldGet(this, _Signer_signerSession, "f"), provider);
48
+ }
49
+ /**
50
+ * Signs a transaction. This populates the transaction type to `0x02` (EIP-1559) unless set.
51
+ * @param {ethers.TransactionRequest} tx The transaction to sign.
52
+ * @return {Promise<string>} Hex-encoded RLP encoding of the transaction and its signature.
53
+ */
54
+ async signTransaction(tx) {
55
+ // get the chain id from the network or tx
56
+ let chainId = tx.chainId;
57
+ if (chainId === undefined) {
58
+ const network = await this.provider?.getNetwork();
59
+ chainId = network?.chainId?.toString() ?? "1";
60
+ }
61
+ // Convert the transaction into a JSON-RPC transaction
62
+ const rpcTx = this.provider instanceof ethers_1.JsonRpcApiProvider
63
+ ? this.provider.getRpcTransaction(tx)
64
+ : // We can just call the getRpcTransaction with a
65
+ // null receiver since it doesn't actually use it
66
+ // (and really should be declared static).
67
+ ethers_1.JsonRpcApiProvider.prototype.getRpcTransaction.call(null, tx);
68
+ rpcTx.type = (0, ethers_1.toBeHex)(tx.type ?? 0x02, 1); // we expect 0x0[0-2]
69
+ const req = {
70
+ chain_id: Number(chainId),
71
+ tx: rpcTx,
72
+ };
73
+ const sig = await __classPrivateFieldGet(this, _Signer_signerSession, "f").signEvm(__classPrivateFieldGet(this, _Signer_address, "f"), req);
74
+ return sig.data().rlp_signed_tx;
75
+ }
76
+ /** Signs arbitrary messages. This uses ethers.js's [hashMessage](https://docs.ethers.org/v6/api/hashing/#hashMessage)
77
+ * to compute the EIP-191 digest and signs this digest using {@link Key#signBlob}.
78
+ * The key (for this session) must have the `"AllowRawBlobSigning"` policy attached.
79
+ * @param {string | Uint8Array} message The message to sign.
80
+ * @return {Promise<string>} The signature.
81
+ */
82
+ async signMessage(message) {
83
+ const digest = ethers_1.ethers.hashMessage(message);
84
+ return this.signBlob(digest);
85
+ }
86
+ /** Signs EIP-712 typed data. This uses ethers.js's
87
+ * [TypedDataEncoder.hash](https://docs.ethers.org/v6/api/hashing/#TypedDataEncoder_hash)
88
+ * to compute the EIP-712 digest and signs this digest using {@link Key#signBlob}.
89
+ * The key (for this session) must have the `"AllowRawBlobSigning"` policy attached.
90
+ * @param {TypedDataDomain} domain The domain of the typed data.
91
+ * @param {Record<string, Array<TypedDataField>>} types The types of the typed data.
92
+ * @param {Record<string, any>} value The value of the typed data.
93
+ * @return {Promise<string>} The signature.
94
+ */
95
+ async signTypedData(domain, types, value) {
96
+ const digest = ethers_1.TypedDataEncoder.hash(domain, types, value);
97
+ return this.signBlob(digest);
98
+ }
99
+ /** Sign arbitrary digest. This uses {@link Key#signBlob}.
100
+ * @param {string} digest The digest to sign.
101
+ * @return {Promise<string>} The signature.
102
+ */
103
+ async signBlob(digest) {
104
+ const blobReq = {
105
+ message_base64: Buffer.from((0, ethers_1.getBytes)(digest)).toString("base64"),
106
+ };
107
+ // Get the key corresponding to this address
108
+ if (__classPrivateFieldGet(this, _Signer_key, "f") === undefined) {
109
+ const key = (await __classPrivateFieldGet(this, _Signer_signerSession, "f").keys()).find((k) => k.materialId === __classPrivateFieldGet(this, _Signer_address, "f"));
110
+ if (key === undefined) {
111
+ throw new Error(`Cannot access key '${__classPrivateFieldGet(this, _Signer_address, "f")}'`);
112
+ }
113
+ __classPrivateFieldSet(this, _Signer_key, key, "f");
114
+ }
115
+ // sign
116
+ const result = await __classPrivateFieldGet(this, _Signer_signerSession, "f").signBlob(__classPrivateFieldGet(this, _Signer_key, "f"), blobReq);
117
+ return result.data().signature;
118
+ }
119
+ }
120
+ exports.Signer = Signer;
121
+ _Signer_address = new WeakMap(), _Signer_key = new WeakMap(), _Signer_signerSession = new WeakMap();
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXRoZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1DQVFnQjtBQUloQjs7R0FFRztBQUNILE1BQWEsTUFBTyxTQUFRLGVBQU0sQ0FBQyxjQUFjO0lBVS9DOzs7O09BSUc7SUFDSCxZQUFZLE9BQWUsRUFBRSxhQUE0QixFQUFFLFFBQWlDO1FBQzFGLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQWZsQixpQ0FBaUM7UUFDeEIsa0NBQWlCO1FBRTFCLGlDQUFpQztRQUNqQyw4QkFBVztRQUVYLDZCQUE2QjtRQUNwQix3Q0FBOEI7UUFTckMsdUJBQUEsSUFBSSxtQkFBWSxPQUFPLE1BQUEsQ0FBQztRQUN4Qix1QkFBQSxJQUFJLHlCQUFrQixhQUFhLE1BQUEsQ0FBQztJQUN0QyxDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLEtBQUssQ0FBQyxVQUFVO1FBQ2QsT0FBTyx1QkFBQSxJQUFJLHVCQUFTLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsUUFBZ0M7UUFDdEMsT0FBTyxJQUFJLE1BQU0sQ0FBQyx1QkFBQSxJQUFJLHVCQUFTLEVBQUUsdUJBQUEsSUFBSSw2QkFBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUE2QjtRQUNqRCwwQ0FBMEM7UUFDMUMsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQztRQUN6QixJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUU7WUFDekIsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQ2xELE9BQU8sR0FBRyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUcsQ0FBQztTQUMvQztRQUVELHNEQUFzRDtRQUN0RCxNQUFNLEtBQUssR0FDVCxJQUFJLENBQUMsUUFBUSxZQUFZLDJCQUFrQjtZQUN6QyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDckMsQ0FBQyxDQUFDLGdEQUFnRDtnQkFDaEQsaURBQWlEO2dCQUNqRCwwQ0FBMEM7Z0JBQzFDLDJCQUFrQixDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3BFLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBQSxnQkFBTyxFQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQXFCO1FBRS9ELE1BQU0sR0FBRyxHQUFtQjtZQUMxQixRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUN6QixFQUFFLEVBQUUsS0FBSztTQUNWLENBQUM7UUFDRixNQUFNLEdBQUcsR0FBRyxNQUFNLHVCQUFBLElBQUksNkJBQWUsQ0FBQyxPQUFPLENBQUMsdUJBQUEsSUFBSSx1QkFBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLGFBQWEsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQTRCO1FBQzVDLE1BQU0sTUFBTSxHQUFHLGVBQU0sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQ2pCLE1BQXVCLEVBQ3ZCLEtBQTRDLEVBQzVDLEtBQTBCO1FBRTFCLE1BQU0sTUFBTSxHQUFHLHlCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFjO1FBQ25DLE1BQU0sT0FBTyxHQUFvQjtZQUMvQixjQUFjLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFBLGlCQUFRLEVBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1NBQ2pFLENBQUM7UUFDRiw0Q0FBNEM7UUFDNUMsSUFBSSx1QkFBQSxJQUFJLG1CQUFLLEtBQUssU0FBUyxFQUFFO1lBQzNCLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSx1QkFBQSxJQUFJLDZCQUFlLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssdUJBQUEsSUFBSSx1QkFBUyxDQUFDLENBQUM7WUFDM0YsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO2dCQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQix1QkFBQSxJQUFJLHVCQUFTLEdBQUcsQ0FBQyxDQUFDO2FBQ3pEO1lBQ0QsdUJBQUEsSUFBSSxlQUFRLEdBQUcsTUFBQSxDQUFDO1NBQ2pCO1FBQ0QsT0FBTztRQUNQLE1BQU0sTUFBTSxHQUFHLE1BQU0sdUJBQUEsSUFBSSw2QkFBZSxDQUFDLFFBQVEsQ0FBQyx1QkFBQSxJQUFJLG1CQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdEUsT0FBTyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQW5IRCx3QkFtSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBKc29uUnBjQXBpUHJvdmlkZXIsXG4gIFR5cGVkRGF0YURvbWFpbixcbiAgVHlwZWREYXRhRW5jb2RlcixcbiAgVHlwZWREYXRhRmllbGQsXG4gIGV0aGVycyxcbiAgZ2V0Qnl0ZXMsXG4gIHRvQmVIZXgsXG59IGZyb20gXCJldGhlcnNcIjtcbmltcG9ydCB7IEJsb2JTaWduUmVxdWVzdCwgRXZtU2lnblJlcXVlc3QsIFNpZ25lclNlc3Npb24gfSBmcm9tIFwiLi4vc2lnbmVyX3Nlc3Npb25cIjtcbmltcG9ydCB7IEtleSB9IGZyb20gXCIuLi9rZXlcIjtcblxuLyoqXG4gKiBBIGV0aGVycy5qcyBTaWduZXIgdXNpbmcgQ3ViZVNpZ25lclxuICovXG5leHBvcnQgY2xhc3MgU2lnbmVyIGV4dGVuZHMgZXRoZXJzLkFic3RyYWN0U2lnbmVyIHtcbiAgLyoqIFRoZSBhZGRyZXNzIG9mIHRoZSBhY2NvdW50ICovXG4gIHJlYWRvbmx5ICNhZGRyZXNzOiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBrZXkgdG8gdXNlIGZvciBzaWduaW5nICovXG4gICNrZXk/OiBLZXk7XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHNlc3Npb24gKi9cbiAgcmVhZG9ubHkgI3NpZ25lclNlc3Npb246IFNpZ25lclNlc3Npb247XG5cbiAgLyoqIENyZWF0ZSBuZXcgU2lnbmVyIGluc3RhbmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIFRoZSBhZGRyZXNzIG9mIHRoZSBhY2NvdW50IHRvIHVzZS5cbiAgICogQHBhcmFtIHtTaWduZXJTZXNzaW9ufSBzaWduZXJTZXNzaW9uIFRoZSB1bmRlcmx5aW5nIFNpZ25lciBzZXNzaW9uLlxuICAgKiBAcGFyYW0ge251bGwgfCBldGhlcnMuUHJvdmlkZXJ9IHByb3ZpZGVyIFRoZSBvcHRpb25hbCBwcm92aWRlciBpbnN0YW5jZSB0byB1c2UuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhZGRyZXNzOiBzdHJpbmcsIHNpZ25lclNlc3Npb246IFNpZ25lclNlc3Npb24sIHByb3ZpZGVyPzogbnVsbCB8IGV0aGVycy5Qcm92aWRlcikge1xuICAgIHN1cGVyKHByb3ZpZGVyKTtcbiAgICB0aGlzLiNhZGRyZXNzID0gYWRkcmVzcztcbiAgICB0aGlzLiNzaWduZXJTZXNzaW9uID0gc2lnbmVyU2Vzc2lvbjtcbiAgfVxuXG4gIC8qKiBSZXNvbHZlcyB0byB0aGUgc2lnbmVyIGFkZHJlc3MuICovXG4gIGFzeW5jIGdldEFkZHJlc3MoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy4jYWRkcmVzcztcbiAgfVxuXG4gIC8qKlxuICAgKiAgUmV0dXJucyB0aGUgc2lnbmVyIGNvbm5lY3RlZCB0byAlJXByb3ZpZGVyJSUuXG4gICAqICBAcGFyYW0ge251bGwgfCBldGhlcnMuUHJvdmlkZXJ9IHByb3ZpZGVyIFRoZSBvcHRpb25hbCBwcm92aWRlciBpbnN0YW5jZSB0byB1c2UuXG4gICAqICBAcmV0dXJuIHtTaWduZXJ9IFRoZSBzaWduZXIgY29ubmVjdGVkIHRvIHNpZ25lci5cbiAgICovXG4gIGNvbm5lY3QocHJvdmlkZXI6IG51bGwgfCBldGhlcnMuUHJvdmlkZXIpOiBTaWduZXIge1xuICAgIHJldHVybiBuZXcgU2lnbmVyKHRoaXMuI2FkZHJlc3MsIHRoaXMuI3NpZ25lclNlc3Npb24sIHByb3ZpZGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWducyBhIHRyYW5zYWN0aW9uLiBUaGlzIHBvcHVsYXRlcyB0aGUgdHJhbnNhY3Rpb24gdHlwZSB0byBgMHgwMmAgKEVJUC0xNTU5KSB1bmxlc3Mgc2V0LlxuICAgKiBAcGFyYW0ge2V0aGVycy5UcmFuc2FjdGlvblJlcXVlc3R9IHR4IFRoZSB0cmFuc2FjdGlvbiB0byBzaWduLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHN0cmluZz59IEhleC1lbmNvZGVkIFJMUCBlbmNvZGluZyBvZiB0aGUgdHJhbnNhY3Rpb24gYW5kIGl0cyBzaWduYXR1cmUuXG4gICAqL1xuICBhc3luYyBzaWduVHJhbnNhY3Rpb24odHg6IGV0aGVycy5UcmFuc2FjdGlvblJlcXVlc3QpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIC8vIGdldCB0aGUgY2hhaW4gaWQgZnJvbSB0aGUgbmV0d29yayBvciB0eFxuICAgIGxldCBjaGFpbklkID0gdHguY2hhaW5JZDtcbiAgICBpZiAoY2hhaW5JZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBuZXR3b3JrID0gYXdhaXQgdGhpcy5wcm92aWRlcj8uZ2V0TmV0d29yaygpO1xuICAgICAgY2hhaW5JZCA9IG5ldHdvcms/LmNoYWluSWQ/LnRvU3RyaW5nKCkgPz8gXCIxXCI7XG4gICAgfVxuXG4gICAgLy8gQ29udmVydCB0aGUgdHJhbnNhY3Rpb24gaW50byBhIEpTT04tUlBDIHRyYW5zYWN0aW9uXG4gICAgY29uc3QgcnBjVHggPVxuICAgICAgdGhpcy5wcm92aWRlciBpbnN0YW5jZW9mIEpzb25ScGNBcGlQcm92aWRlclxuICAgICAgICA/IHRoaXMucHJvdmlkZXIuZ2V0UnBjVHJhbnNhY3Rpb24odHgpXG4gICAgICAgIDogLy8gV2UgY2FuIGp1c3QgY2FsbCB0aGUgZ2V0UnBjVHJhbnNhY3Rpb24gd2l0aCBhXG4gICAgICAgICAgLy8gbnVsbCByZWNlaXZlciBzaW5jZSBpdCBkb2Vzbid0IGFjdHVhbGx5IHVzZSBpdFxuICAgICAgICAgIC8vIChhbmQgcmVhbGx5IHNob3VsZCBiZSBkZWNsYXJlZCBzdGF0aWMpLlxuICAgICAgICAgIEpzb25ScGNBcGlQcm92aWRlci5wcm90b3R5cGUuZ2V0UnBjVHJhbnNhY3Rpb24uY2FsbChudWxsLCB0eCk7XG4gICAgcnBjVHgudHlwZSA9IHRvQmVIZXgodHgudHlwZSA/PyAweDAyLCAxKTsgLy8gd2UgZXhwZWN0IDB4MFswLTJdXG5cbiAgICBjb25zdCByZXEgPSA8RXZtU2lnblJlcXVlc3Q+e1xuICAgICAgY2hhaW5faWQ6IE51bWJlcihjaGFpbklkKSxcbiAgICAgIHR4OiBycGNUeCxcbiAgICB9O1xuICAgIGNvbnN0IHNpZyA9IGF3YWl0IHRoaXMuI3NpZ25lclNlc3Npb24uc2lnbkV2bSh0aGlzLiNhZGRyZXNzLCByZXEpO1xuICAgIHJldHVybiBzaWcuZGF0YSgpLnJscF9zaWduZWRfdHg7XG4gIH1cblxuICAvKiogU2lnbnMgYXJiaXRyYXJ5IG1lc3NhZ2VzLiBUaGlzIHVzZXMgZXRoZXJzLmpzJ3MgW2hhc2hNZXNzYWdlXShodHRwczovL2RvY3MuZXRoZXJzLm9yZy92Ni9hcGkvaGFzaGluZy8jaGFzaE1lc3NhZ2UpXG4gICAqIHRvIGNvbXB1dGUgdGhlIEVJUC0xOTEgZGlnZXN0IGFuZCBzaWducyB0aGlzIGRpZ2VzdCB1c2luZyB7QGxpbmsgS2V5I3NpZ25CbG9ifS5cbiAgICogVGhlIGtleSAoZm9yIHRoaXMgc2Vzc2lvbikgbXVzdCBoYXZlIHRoZSBgXCJBbGxvd1Jhd0Jsb2JTaWduaW5nXCJgIHBvbGljeSBhdHRhY2hlZC5cbiAgICogQHBhcmFtIHtzdHJpbmcgfCBVaW50OEFycmF5fSBtZXNzYWdlIFRoZSBtZXNzYWdlIHRvIHNpZ24uXG4gICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gVGhlIHNpZ25hdHVyZS5cbiAgICovXG4gIGFzeW5jIHNpZ25NZXNzYWdlKG1lc3NhZ2U6IHN0cmluZyB8IFVpbnQ4QXJyYXkpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGRpZ2VzdCA9IGV0aGVycy5oYXNoTWVzc2FnZShtZXNzYWdlKTtcbiAgICByZXR1cm4gdGhpcy5zaWduQmxvYihkaWdlc3QpO1xuICB9XG5cbiAgLyoqIFNpZ25zIEVJUC03MTIgdHlwZWQgZGF0YS4gVGhpcyB1c2VzIGV0aGVycy5qcydzXG4gICAqIFtUeXBlZERhdGFFbmNvZGVyLmhhc2hdKGh0dHBzOi8vZG9jcy5ldGhlcnMub3JnL3Y2L2FwaS9oYXNoaW5nLyNUeXBlZERhdGFFbmNvZGVyX2hhc2gpXG4gICAqIHRvIGNvbXB1dGUgdGhlIEVJUC03MTIgZGlnZXN0IGFuZCBzaWducyB0aGlzIGRpZ2VzdCB1c2luZyB7QGxpbmsgS2V5I3NpZ25CbG9ifS5cbiAgICogVGhlIGtleSAoZm9yIHRoaXMgc2Vzc2lvbikgbXVzdCBoYXZlIHRoZSBgXCJBbGxvd1Jhd0Jsb2JTaWduaW5nXCJgIHBvbGljeSBhdHRhY2hlZC5cbiAgICogQHBhcmFtIHtUeXBlZERhdGFEb21haW59IGRvbWFpbiBUaGUgZG9tYWluIG9mIHRoZSB0eXBlZCBkYXRhLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIEFycmF5PFR5cGVkRGF0YUZpZWxkPj59IHR5cGVzIFRoZSB0eXBlcyBvZiB0aGUgdHlwZWQgZGF0YS5cbiAgICogQHBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIHR5cGVkIGRhdGEuXG4gICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gVGhlIHNpZ25hdHVyZS5cbiAgICovXG4gIGFzeW5jIHNpZ25UeXBlZERhdGEoXG4gICAgZG9tYWluOiBUeXBlZERhdGFEb21haW4sXG4gICAgdHlwZXM6IFJlY29yZDxzdHJpbmcsIEFycmF5PFR5cGVkRGF0YUZpZWxkPj4sXG4gICAgdmFsdWU6IFJlY29yZDxzdHJpbmcsIGFueT4sIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGRpZ2VzdCA9IFR5cGVkRGF0YUVuY29kZXIuaGFzaChkb21haW4sIHR5cGVzLCB2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMuc2lnbkJsb2IoZGlnZXN0KTtcbiAgfVxuXG4gIC8qKiBTaWduIGFyYml0cmFyeSBkaWdlc3QuIFRoaXMgdXNlcyB7QGxpbmsgS2V5I3NpZ25CbG9ifS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpZ2VzdCBUaGUgZGlnZXN0IHRvIHNpZ24uXG4gICAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gVGhlIHNpZ25hdHVyZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgc2lnbkJsb2IoZGlnZXN0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGJsb2JSZXEgPSA8QmxvYlNpZ25SZXF1ZXN0PntcbiAgICAgIG1lc3NhZ2VfYmFzZTY0OiBCdWZmZXIuZnJvbShnZXRCeXRlcyhkaWdlc3QpKS50b1N0cmluZyhcImJhc2U2NFwiKSxcbiAgICB9O1xuICAgIC8vIEdldCB0aGUga2V5IGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBhZGRyZXNzXG4gICAgaWYgKHRoaXMuI2tleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBrZXkgPSAoYXdhaXQgdGhpcy4jc2lnbmVyU2Vzc2lvbi5rZXlzKCkpLmZpbmQoKGspID0+IGsubWF0ZXJpYWxJZCA9PT0gdGhpcy4jYWRkcmVzcyk7XG4gICAgICBpZiAoa2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgYWNjZXNzIGtleSAnJHt0aGlzLiNhZGRyZXNzfSdgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuI2tleSA9IGtleTtcbiAgICB9XG4gICAgLy8gc2lnblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuI3NpZ25lclNlc3Npb24uc2lnbkJsb2IodGhpcy4ja2V5LCBibG9iUmVxKTtcbiAgICByZXR1cm4gcmVzdWx0LmRhdGEoKS5zaWduYXR1cmU7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,114 @@
1
+ import { EnvInterface } from "./env";
2
+ import { components, Client } from "./client";
3
+ import { Org } from "./org";
4
+ import { SignerSessionStorage } from "./session/signer_session_manager";
5
+ import { SignerSession } from "./signer_session";
6
+ import { ManagementSessionManager, ManagementSessionStorage } from "./session/management_session_manager";
7
+ import { OidcSessionManager, OidcSessionStorage } from "./session/oidc_session_manager";
8
+ /** CubeSigner constructor options */
9
+ export interface CubeSignerOptions {
10
+ /** The environment to use */
11
+ env?: EnvInterface;
12
+ /** The management authorization token */
13
+ sessionMgr?: ManagementSessionManager | OidcSessionManager;
14
+ }
15
+ export type UserInfo = components["schemas"]["UserInfo"];
16
+ export type TotpInfo = components["responses"]["TotpInfo"]["content"]["application/json"];
17
+ export type ConfiguredMfa = components["schemas"]["ConfiguredMfa"];
18
+ /** CubeSigner client */
19
+ export declare class CubeSigner {
20
+ #private;
21
+ readonly sessionMgr?: ManagementSessionManager | OidcSessionManager;
22
+ /** @return {EnvInterface} The CubeSigner environment of this client */
23
+ get env(): EnvInterface;
24
+ /**
25
+ * Loads an existing management session and creates a CubeSigner instance.
26
+ * @param {ManagementSessionStorage} storage Optional session storage to load
27
+ * the session from. If not specified, the management session from the config
28
+ * directory will be loaded.
29
+ * @return {Promise<CubeSigner>} New CubeSigner instance
30
+ */
31
+ static loadManagementSession(storage?: ManagementSessionStorage): Promise<CubeSigner>;
32
+ /**
33
+ * Loads a signer session from a session storage (e.g., session file).
34
+ * @param {SignerSessionStorage} storage Optional session storage to load
35
+ * the session from. If not specified, the signer session from the config
36
+ * directory will be loaded.
37
+ * @return {Promise<SignerSession>} New signer session
38
+ */
39
+ static loadSignerSession(storage?: SignerSessionStorage): Promise<SignerSession>;
40
+ /**
41
+ * Loads a signer session from OIDC storage
42
+ * @param {OidcSessionStorage} storage The storage to load from
43
+ * @return {Promise<SignerSession>} New signer session
44
+ */
45
+ static loadOidcSession(storage: OidcSessionStorage): Promise<SignerSession>;
46
+ /**
47
+ * Create a new CubeSigner instance.
48
+ * @param {CubeSignerOptions} options The options for the CubeSigner instance.
49
+ */
50
+ constructor(options: CubeSignerOptions);
51
+ /**
52
+ * Authenticate an OIDC user and create a new OIDC session manager for them.
53
+ * @param {string} oidcToken The OIDC token
54
+ * @param {string} orgId The id of the organization that the user is in
55
+ * @param {List<string>} scopes The scopes of the resulting session
56
+ * @param {OidcSessionStorage} storage The signer session storage
57
+ * @return {Promise<OidcSessionManager>} The OIDC session manager
58
+ */
59
+ createOidcManager(oidcToken: string, orgId: string, scopes: Array<string>, storage?: OidcSessionStorage): Promise<OidcSessionManager>;
60
+ /**
61
+ * Authenticate an OIDC user and create a new session for them.
62
+ * @param {string} oidcToken The OIDC token
63
+ * @param {string} orgId The id of the organization that the user is in
64
+ * @param {List<string>} scopes The scopes of the resulting session
65
+ * @param {OidcSessionStorage} storage The signer session storage
66
+ * @return {Promise<SignerSession>} The signer session
67
+ */
68
+ createOidcSession(oidcToken: string, orgId: string, scopes: Array<string>, storage?: OidcSessionStorage): Promise<SignerSession>;
69
+ /** Retrieves information about the current user. */
70
+ aboutMe(): Promise<UserInfo>;
71
+ /**
72
+ * Creates and sets a new TOTP configuration for the logged-in user,
73
+ * overriding the existing one (if any).
74
+ */
75
+ resetTotp(): Promise<TotpInfo>;
76
+ /**
77
+ * Verifies a given TOTP code against the current user's TOTP configuration.
78
+ * Throws an error if the verification fails.
79
+ * @param {string} code Current TOTP code
80
+ */
81
+ verifyTotp(code: string): Promise<void>;
82
+ /** Retrieves information about an organization.
83
+ * @param {string} orgId The ID or name of the organization.
84
+ * @return {Org} The organization.
85
+ * */
86
+ getOrg(orgId: string): Promise<Org>;
87
+ /** Get the management client.
88
+ * @return {Client} The client.
89
+ * @internal
90
+ * */
91
+ management(): Promise<Client>;
92
+ }
93
+ /** Organizations */
94
+ export * from "./org";
95
+ /** Keys */
96
+ export * from "./key";
97
+ /** Roles */
98
+ export * from "./role";
99
+ /** Env */
100
+ export * from "./env";
101
+ /** Sessions */
102
+ export * from "./signer_session";
103
+ /** Session storage */
104
+ export * from "./session/session_storage";
105
+ /** Session manager */
106
+ export * from "./session/session_manager";
107
+ /** Management session manager */
108
+ export * from "./session/management_session_manager";
109
+ /** OIDC session manager */
110
+ export * from "./session/oidc_session_manager";
111
+ /** Signer session manager */
112
+ export * from "./session/signer_session_manager";
113
+ /** Export ethers.js Signer */
114
+ export * as ethers from "./ethers";