@aura-protocol/cli 0.1.0

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 (78) hide show
  1. package/README.md +307 -0
  2. package/bin/aura.js +8 -0
  3. package/dist/commands/confidential.d.ts +2 -0
  4. package/dist/commands/confidential.js +564 -0
  5. package/dist/commands/confidential.js.map +1 -0
  6. package/dist/commands/config.d.ts +2 -0
  7. package/dist/commands/config.js +123 -0
  8. package/dist/commands/config.js.map +1 -0
  9. package/dist/commands/dashboard.d.ts +2 -0
  10. package/dist/commands/dashboard.js +29 -0
  11. package/dist/commands/dashboard.js.map +1 -0
  12. package/dist/commands/dwallet.d.ts +2 -0
  13. package/dist/commands/dwallet.js +131 -0
  14. package/dist/commands/dwallet.js.map +1 -0
  15. package/dist/commands/execution.d.ts +2 -0
  16. package/dist/commands/execution.js +261 -0
  17. package/dist/commands/execution.js.map +1 -0
  18. package/dist/commands/governance.d.ts +2 -0
  19. package/dist/commands/governance.js +169 -0
  20. package/dist/commands/governance.js.map +1 -0
  21. package/dist/commands/helpers.d.ts +79 -0
  22. package/dist/commands/helpers.js +219 -0
  23. package/dist/commands/helpers.js.map +1 -0
  24. package/dist/commands/treasury.d.ts +2 -0
  25. package/dist/commands/treasury.js +319 -0
  26. package/dist/commands/treasury.js.map +1 -0
  27. package/dist/config.d.ts +35 -0
  28. package/dist/config.js +96 -0
  29. package/dist/config.js.map +1 -0
  30. package/dist/context.d.ts +37 -0
  31. package/dist/context.js +57 -0
  32. package/dist/context.js.map +1 -0
  33. package/dist/dashboard.d.ts +7 -0
  34. package/dist/dashboard.js +95 -0
  35. package/dist/dashboard.js.map +1 -0
  36. package/dist/domain.d.ts +16 -0
  37. package/dist/domain.js +86 -0
  38. package/dist/domain.js.map +1 -0
  39. package/dist/format.d.ts +9 -0
  40. package/dist/format.js +92 -0
  41. package/dist/format.js.map +1 -0
  42. package/dist/ika.d.ts +76 -0
  43. package/dist/ika.js +178 -0
  44. package/dist/ika.js.map +1 -0
  45. package/dist/index.d.ts +3 -0
  46. package/dist/index.js +43 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/output.d.ts +32 -0
  49. package/dist/output.js +134 -0
  50. package/dist/output.js.map +1 -0
  51. package/dist/protocol.d.ts +99 -0
  52. package/dist/protocol.js +353 -0
  53. package/dist/protocol.js.map +1 -0
  54. package/dist/sdk.d.ts +6 -0
  55. package/dist/sdk.js +6 -0
  56. package/dist/sdk.js.map +1 -0
  57. package/dist/treasury-view.d.ts +11 -0
  58. package/dist/treasury-view.js +103 -0
  59. package/dist/treasury-view.js.map +1 -0
  60. package/dist/vendor/encrypt/generated/grpc/encrypt_service.d.ts +195 -0
  61. package/dist/vendor/encrypt/generated/grpc/encrypt_service.js +514 -0
  62. package/dist/vendor/encrypt/generated/grpc/encrypt_service.js.map +1 -0
  63. package/dist/vendor/encrypt/grpc.d.ts +70 -0
  64. package/dist/vendor/encrypt/grpc.js +108 -0
  65. package/dist/vendor/encrypt/grpc.js.map +1 -0
  66. package/dist/vendor/ika/bcs-types.d.ts +1045 -0
  67. package/dist/vendor/ika/bcs-types.js +185 -0
  68. package/dist/vendor/ika/bcs-types.js.map +1 -0
  69. package/dist/vendor/ika/generated/grpc/ika_dwallet.d.ts +141 -0
  70. package/dist/vendor/ika/generated/grpc/ika_dwallet.js +531 -0
  71. package/dist/vendor/ika/generated/grpc/ika_dwallet.js.map +1 -0
  72. package/dist/vendor/ika/grpc.d.ts +16 -0
  73. package/dist/vendor/ika/grpc.js +129 -0
  74. package/dist/vendor/ika/grpc.js.map +1 -0
  75. package/dist/wallet.d.ts +2 -0
  76. package/dist/wallet.js +21 -0
  77. package/dist/wallet.js.map +1 -0
  78. package/package.json +54 -0
@@ -0,0 +1,95 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text, useApp, useInput, render } from "ink";
3
+ import React, { useEffect, useState } from "react";
4
+ import { PublicKey } from "@solana/web3.js";
5
+ import { formatTimestamp } from "./format.js";
6
+ import { createTable } from "./output.js";
7
+ import { getMessageApprovalState, parseCiphertextVerified, parseDecryptionReady, } from "./protocol.js";
8
+ import { renderTreasurySections } from "./treasury-view.js";
9
+ async function buildLivePanel(ctx, account) {
10
+ const pending = account.pending;
11
+ if (!pending) {
12
+ return undefined;
13
+ }
14
+ const table = createTable(["Live", "Value"]);
15
+ if (pending.policyOutputCiphertextAccount) {
16
+ const info = await ctx.connection.getAccountInfo(new PublicKey(pending.policyOutputCiphertextAccount), "confirmed");
17
+ table.push(["Policy output verified", parseCiphertextVerified(info) ? "Yes" : "No"]);
18
+ }
19
+ if (pending.decryptionRequest?.requestAccount) {
20
+ const info = await ctx.connection.getAccountInfo(new PublicKey(pending.decryptionRequest.requestAccount), "confirmed");
21
+ table.push(["Decryption ready", parseDecryptionReady(info) ? "Yes" : "No"]);
22
+ }
23
+ if (pending.signatureRequest?.messageApprovalAccount) {
24
+ const state = await getMessageApprovalState(ctx.connection, new PublicKey(pending.signatureRequest.messageApprovalAccount));
25
+ table.push(["Message approval", state]);
26
+ }
27
+ return table.length > 0 ? table.toString() : undefined;
28
+ }
29
+ async function readSnapshot(ctx, treasury) {
30
+ const account = await ctx.client.getTreasuryAccount(treasury);
31
+ return {
32
+ treasury,
33
+ account,
34
+ livePanel: await buildLivePanel(ctx, account),
35
+ refreshedAt: new Date(),
36
+ };
37
+ }
38
+ function Section(props) {
39
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 1, marginBottom: 1, children: [_jsx(Text, { color: "cyanBright", children: props.title }), _jsx(Text, { children: props.body })] }));
40
+ }
41
+ function DashboardApp(props) {
42
+ const { exit } = useApp();
43
+ const [snapshot, setSnapshot] = useState(null);
44
+ const [error, setError] = useState(null);
45
+ const [refreshCount, setRefreshCount] = useState(0);
46
+ useEffect(() => {
47
+ let active = true;
48
+ let timer;
49
+ const refresh = async () => {
50
+ try {
51
+ const next = await readSnapshot(props.ctx, props.treasury);
52
+ if (!active) {
53
+ return;
54
+ }
55
+ setSnapshot(next);
56
+ setError(null);
57
+ }
58
+ catch (nextError) {
59
+ if (!active) {
60
+ return;
61
+ }
62
+ setError(nextError instanceof Error ? nextError.message : String(nextError));
63
+ }
64
+ };
65
+ void refresh();
66
+ timer = setInterval(() => {
67
+ void refresh();
68
+ }, props.intervalMs);
69
+ return () => {
70
+ active = false;
71
+ if (timer) {
72
+ clearInterval(timer);
73
+ }
74
+ };
75
+ }, [props.ctx, props.intervalMs, props.treasury, refreshCount]);
76
+ useInput((input, key) => {
77
+ if (input === "q" || key.escape || (key.ctrl && input === "c")) {
78
+ exit();
79
+ return;
80
+ }
81
+ if (input === "r") {
82
+ setRefreshCount((value) => value + 1);
83
+ }
84
+ });
85
+ if (!snapshot) {
86
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "cyanBright", children: "AURA Dashboard" }), _jsx(Text, { children: error ? `Loading failed: ${error}` : "Loading treasury state..." })] }));
87
+ }
88
+ const sections = renderTreasurySections(snapshot.treasury, snapshot.account);
89
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { marginBottom: 1, flexDirection: "column", children: [_jsx(Text, { color: "cyanBright", children: "AURA Dashboard" }), _jsxs(Text, { children: [snapshot.account.agentId, " | ", snapshot.treasury.toBase58(), " | refreshed", " ", formatTimestamp(Math.floor(snapshot.refreshedAt.getTime() / 1000))] }), _jsx(Text, { color: "gray", children: "Press r to refresh, q or Esc to quit." })] }), error ? (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: "red", children: ["Last refresh failed: ", error] }) })) : null, _jsx(Section, { title: "Overview", body: sections.overview }), _jsx(Section, { title: "Policy", body: sections.policy }), sections.confidential ? _jsx(Section, { title: "Confidential", body: sections.confidential }) : null, sections.pending ? _jsx(Section, { title: "Pending", body: sections.pending }) : null, snapshot.livePanel ? _jsx(Section, { title: "Live", body: snapshot.livePanel }) : null, sections.dwallets ? _jsx(Section, { title: "dWallets", body: sections.dwallets }) : null, sections.governance ? _jsx(Section, { title: "Governance", body: sections.governance }) : null] }));
90
+ }
91
+ export async function runDashboard(options) {
92
+ const app = render(_jsx(DashboardApp, { ctx: options.ctx, treasury: options.treasury, intervalMs: options.intervalMs }), { exitOnCtrlC: true });
93
+ await app.waitUntilExit();
94
+ }
95
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../src/dashboard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export declare function parseChain(input: string | number): number;
2
+ export declare function formatChain(code: number): string;
3
+ export declare function parseTransactionType(input: string | number): number;
4
+ export declare function formatTransactionType(code: number): string;
5
+ export declare function formatProposalStatus(code: number): string;
6
+ export declare function formatViolation(code: number): string;
7
+ export declare function chainNameForDigest(code: number): string;
8
+ export declare function transactionTypeNameForDigest(code: number): string;
9
+ export declare function listChainChoices(): {
10
+ name: string;
11
+ value: number;
12
+ }[];
13
+ export declare function listTransactionTypeChoices(): {
14
+ name: string;
15
+ value: number;
16
+ }[];
package/dist/domain.js ADDED
@@ -0,0 +1,86 @@
1
+ const CHAINS = [
2
+ { code: 0, name: "bitcoin", label: "Bitcoin" },
3
+ { code: 1, name: "ethereum", label: "Ethereum" },
4
+ { code: 2, name: "solana", label: "Solana" },
5
+ { code: 3, name: "polygon", label: "Polygon" },
6
+ { code: 4, name: "arbitrum", label: "Arbitrum" },
7
+ { code: 5, name: "optimism", label: "Optimism" },
8
+ ];
9
+ const TX_TYPES = [
10
+ { code: 0, name: "transfer", label: "Transfer" },
11
+ { code: 1, name: "defi_swap", label: "DeFi Swap" },
12
+ { code: 2, name: "lending_deposit", label: "Lending Deposit" },
13
+ { code: 3, name: "nft_purchase", label: "NFT Purchase" },
14
+ { code: 4, name: "contract_interaction", label: "Contract Interaction" },
15
+ ];
16
+ const PROPOSAL_STATUSES = [
17
+ { code: 0, label: "Proposed" },
18
+ { code: 1, label: "Decryption Requested" },
19
+ { code: 2, label: "Awaiting Signature" },
20
+ { code: 3, label: "Executed" },
21
+ { code: 4, label: "Denied" },
22
+ { code: 5, label: "Cancelled" },
23
+ { code: 6, label: "Expired" },
24
+ ];
25
+ const VIOLATIONS = [
26
+ { code: 0, label: "none" },
27
+ { code: 1, label: "per-tx limit" },
28
+ { code: 2, label: "daily limit" },
29
+ { code: 3, label: "bitcoin manual review" },
30
+ { code: 4, label: "time window" },
31
+ { code: 5, label: "velocity limit" },
32
+ { code: 6, label: "protocol not allowed" },
33
+ { code: 7, label: "slippage exceeded" },
34
+ { code: 8, label: "quote stale" },
35
+ { code: 9, label: "counterparty risk" },
36
+ { code: 10, label: "shared pool limit" },
37
+ ];
38
+ function entryFor(code, entries) {
39
+ return entries.find((entry) => entry.code === code);
40
+ }
41
+ function parseCode(input, entries, kind) {
42
+ const normalized = typeof input === "number" ? String(input) : input.trim().toLowerCase();
43
+ const direct = Number(normalized);
44
+ if (Number.isInteger(direct) && entries.some((entry) => entry.code === direct)) {
45
+ return direct;
46
+ }
47
+ const match = entries.find((entry) => entry.name === normalized || entry.label.toLowerCase() === normalized);
48
+ if (match) {
49
+ return match.code;
50
+ }
51
+ throw new Error(`Unknown ${kind}: ${input}`);
52
+ }
53
+ function labelFor(code, entries, fallback) {
54
+ return entries.find((entry) => entry.code === code)?.label ?? fallback;
55
+ }
56
+ export function parseChain(input) {
57
+ return parseCode(input, CHAINS, "chain");
58
+ }
59
+ export function formatChain(code) {
60
+ return labelFor(code, CHAINS, `Unknown (${code})`);
61
+ }
62
+ export function parseTransactionType(input) {
63
+ return parseCode(input, TX_TYPES, "transaction type");
64
+ }
65
+ export function formatTransactionType(code) {
66
+ return labelFor(code, TX_TYPES, `Unknown (${code})`);
67
+ }
68
+ export function formatProposalStatus(code) {
69
+ return labelFor(code, PROPOSAL_STATUSES, `Unknown (${code})`);
70
+ }
71
+ export function formatViolation(code) {
72
+ return labelFor(code, VIOLATIONS, `unknown (${code})`);
73
+ }
74
+ export function chainNameForDigest(code) {
75
+ return entryFor(code, CHAINS)?.name ?? `unknown_${code}`;
76
+ }
77
+ export function transactionTypeNameForDigest(code) {
78
+ return entryFor(code, TX_TYPES)?.name ?? `unknown_${code}`;
79
+ }
80
+ export function listChainChoices() {
81
+ return CHAINS.map((entry) => ({ name: entry.label, value: entry.code }));
82
+ }
83
+ export function listTransactionTypeChoices() {
84
+ return TX_TYPES.map((entry) => ({ name: entry.label, value: entry.code }));
85
+ }
86
+ //# sourceMappingURL=domain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.js","sourceRoot":"","sources":["../src/domain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { PublicKey } from "@solana/web3.js";
2
+ export declare function formatUsd(value: unknown): string;
3
+ export declare function formatPercentBps(value: unknown): string;
4
+ export declare function formatPubkey(value: PublicKey | string | null | undefined, options?: {
5
+ shorten?: boolean;
6
+ }): string;
7
+ export declare function formatTimestamp(value: unknown): string;
8
+ export declare function formatRelativeSeconds(targetSeconds: unknown): string;
9
+ export declare function formatNullable(value: unknown): string;
package/dist/format.js ADDED
@@ -0,0 +1,92 @@
1
+ import BN from "bn.js";
2
+ import { PublicKey } from "@solana/web3.js";
3
+ const usdFormatter = new Intl.NumberFormat("en-US", {
4
+ style: "currency",
5
+ currency: "USD",
6
+ minimumFractionDigits: 2,
7
+ maximumFractionDigits: 2,
8
+ });
9
+ function asBigInt(value) {
10
+ if (value === null || value === undefined) {
11
+ return null;
12
+ }
13
+ if (typeof value === "bigint") {
14
+ return value;
15
+ }
16
+ if (typeof value === "number") {
17
+ return BigInt(Math.trunc(value));
18
+ }
19
+ if (typeof value === "string" && value.trim().length > 0) {
20
+ return BigInt(value);
21
+ }
22
+ if (BN.isBN(value)) {
23
+ return BigInt(value.toString());
24
+ }
25
+ return null;
26
+ }
27
+ export function formatUsd(value) {
28
+ const normalized = asBigInt(value);
29
+ if (normalized === null) {
30
+ return "—";
31
+ }
32
+ return usdFormatter.format(Number(normalized));
33
+ }
34
+ export function formatPercentBps(value) {
35
+ const normalized = asBigInt(value);
36
+ if (normalized === null) {
37
+ return "—";
38
+ }
39
+ return `${(Number(normalized) / 100).toFixed(2)}%`;
40
+ }
41
+ export function formatPubkey(value, options = {}) {
42
+ if (!value) {
43
+ return "—";
44
+ }
45
+ const base58 = value instanceof PublicKey ? value.toBase58() : value;
46
+ if (options.shorten === false || base58.length <= 12) {
47
+ return base58;
48
+ }
49
+ return `${base58.slice(0, 4)}…${base58.slice(-4)}`;
50
+ }
51
+ export function formatTimestamp(value) {
52
+ const normalized = asBigInt(value);
53
+ if (normalized === null) {
54
+ return "—";
55
+ }
56
+ const millis = Number(normalized) * 1000;
57
+ return new Date(millis).toLocaleString("en-US", {
58
+ year: "numeric",
59
+ month: "short",
60
+ day: "2-digit",
61
+ hour: "2-digit",
62
+ minute: "2-digit",
63
+ second: "2-digit",
64
+ });
65
+ }
66
+ export function formatRelativeSeconds(targetSeconds) {
67
+ const normalized = asBigInt(targetSeconds);
68
+ if (normalized === null) {
69
+ return "—";
70
+ }
71
+ const diff = Number(normalized) - Math.floor(Date.now() / 1000);
72
+ const abs = Math.abs(diff);
73
+ const hours = Math.floor(abs / 3600);
74
+ const minutes = Math.floor((abs % 3600) / 60);
75
+ const seconds = abs % 60;
76
+ const parts = [
77
+ hours > 0 ? `${hours}h` : null,
78
+ minutes > 0 ? `${minutes}m` : null,
79
+ `${seconds}s`,
80
+ ].filter(Boolean);
81
+ return diff >= 0 ? `in ${parts.join(" ")}` : `${parts.join(" ")} ago`;
82
+ }
83
+ export function formatNullable(value) {
84
+ if (value === null || value === undefined || value === "") {
85
+ return "—";
86
+ }
87
+ if (typeof value === "boolean") {
88
+ return value ? "Yes" : "No";
89
+ }
90
+ return String(value);
91
+ }
92
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
package/dist/ika.d.ts ADDED
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Thin wrappers around the Ika Encrypt and dWallet gRPC clients.
3
+ *
4
+ * Both clients are pre-alpha — data is public plaintext on-chain, no real
5
+ * FHE or MPC security yet. The interfaces match the Rust smoke tests in
6
+ * smoke/aura-devnet/ so the full confidential + execution flow works end-to-end.
7
+ *
8
+ * Encrypt gRPC: pre-alpha-dev-1.encrypt.ika-network.net:443
9
+ * dWallet gRPC: pre-alpha-dev-1.ika.ika-network.net:443
10
+ */
11
+ import { PublicKey } from "@solana/web3.js";
12
+ import { DEVNET_PRE_ALPHA_GRPC_URL as ENCRYPT_GRPC_URL } from "./vendor/encrypt/grpc.js";
13
+ declare const IKA_GRPC_URL = "pre-alpha-dev-1.ika.ika-network.net:443";
14
+ export { ENCRYPT_GRPC_URL, IKA_GRPC_URL };
15
+ /**
16
+ * The 32-byte network encryption public key used by the pre-alpha Encrypt service.
17
+ * Matches `ENCRYPT_NETWORK_KEY` in the Rust smoke tests.
18
+ */
19
+ export declare const ENCRYPT_NETWORK_KEY: Buffer<ArrayBuffer>;
20
+ /**
21
+ * Encrypts a single u64 value via the Ika Encrypt gRPC service and returns
22
+ * the on-chain ciphertext account pubkey.
23
+ *
24
+ * In pre-alpha mode the value is stored as plaintext — no real FHE yet.
25
+ * The returned pubkey is the `handlePda` that must be verified on-chain
26
+ * before it can be used in a confidential proposal.
27
+ *
28
+ * @param value The u64 value to encrypt (as a number or bigint).
29
+ * @param authorized The Solana pubkey authorized to use this ciphertext
30
+ * (typically the AURA program ID).
31
+ * @param grpcUrl Override the gRPC endpoint (defaults to devnet pre-alpha).
32
+ */
33
+ export declare function encryptU64(value: number | bigint, authorized: PublicKey, grpcUrl?: string): Promise<PublicKey>;
34
+ /**
35
+ * Encrypts multiple u64 values in a single gRPC call (more efficient than
36
+ * calling `encryptU64` separately for each value).
37
+ *
38
+ * Returns one pubkey per input value in the same order.
39
+ */
40
+ export declare function encryptU64Batch(values: (number | bigint)[], authorized: PublicKey, grpcUrl?: string): Promise<PublicKey[]>;
41
+ /**
42
+ * Reads a decrypted ciphertext value from the Encrypt network.
43
+ *
44
+ * In pre-alpha mode this returns the plaintext directly.
45
+ * The returned buffer contains the raw bytes (8 bytes for u64 LE).
46
+ *
47
+ * @param ciphertextId The on-chain ciphertext account pubkey.
48
+ * @param signer The pubkey authorized to read this ciphertext.
49
+ * @param grpcUrl Override the gRPC endpoint.
50
+ */
51
+ export declare function readCiphertext(ciphertextId: PublicKey, signer: PublicKey, grpcUrl?: string): Promise<{
52
+ value: Buffer;
53
+ fheType: number;
54
+ digest: Buffer;
55
+ }>;
56
+ /**
57
+ * Reads a u64 ciphertext and returns the decoded value.
58
+ * Convenience wrapper around `readCiphertext` for u64 values.
59
+ */
60
+ export declare function readU64Ciphertext(ciphertextId: PublicKey, signer: PublicKey, grpcUrl?: string): Promise<bigint>;
61
+ /**
62
+ * Drives the dWallet presign + sign flow via the Ika dWallet gRPC service.
63
+ *
64
+ * This is called after `execute_pending` creates the `MessageApproval` account
65
+ * on-chain. The dWallet network processes the presign and sign requests and
66
+ * writes the signature back to the `MessageApproval` account.
67
+ *
68
+ * @param senderPubkey The Solana pubkey of the transaction sender (payer).
69
+ * @param dwalletAddr The on-chain dWallet account pubkey (32 bytes).
70
+ * @param message The message bytes to sign (keccak256 digest of the proposal).
71
+ * @param txSignature The Solana transaction signature from `execute_pending`
72
+ * (used as the approval proof).
73
+ * @param grpcUrl Override the gRPC endpoint.
74
+ * @returns The dWallet signature bytes.
75
+ */
76
+ export declare function requestDwalletSign(senderPubkey: PublicKey, dwalletAddr: PublicKey, message: Buffer, txSignature: Buffer, grpcUrl?: string): Promise<Buffer>;
package/dist/ika.js ADDED
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Thin wrappers around the Ika Encrypt and dWallet gRPC clients.
3
+ *
4
+ * Both clients are pre-alpha — data is public plaintext on-chain, no real
5
+ * FHE or MPC security yet. The interfaces match the Rust smoke tests in
6
+ * smoke/aura-devnet/ so the full confidential + execution flow works end-to-end.
7
+ *
8
+ * Encrypt gRPC: pre-alpha-dev-1.encrypt.ika-network.net:443
9
+ * dWallet gRPC: pre-alpha-dev-1.ika.ika-network.net:443
10
+ */
11
+ import { PublicKey } from "@solana/web3.js";
12
+ import { createEncryptClient, encodeReadCiphertextMessage, Chain as EncryptChain, DEVNET_PRE_ALPHA_GRPC_URL as ENCRYPT_GRPC_URL, } from "./vendor/encrypt/grpc.js";
13
+ import { createIkaClient, } from "./vendor/ika/grpc.js";
14
+ const IKA_GRPC_URL = "pre-alpha-dev-1.ika.ika-network.net:443";
15
+ export { ENCRYPT_GRPC_URL, IKA_GRPC_URL };
16
+ /**
17
+ * FHE type for u64 values — matches `ENCRYPT_FHE_UINT64` in the Rust program.
18
+ * In pre-alpha mode the Encrypt executor accepts any value here.
19
+ */
20
+ const FHE_TYPE_UINT64 = 0;
21
+ /**
22
+ * The 32-byte network encryption public key used by the pre-alpha Encrypt service.
23
+ * Matches `ENCRYPT_NETWORK_KEY` in the Rust smoke tests.
24
+ */
25
+ export const ENCRYPT_NETWORK_KEY = Buffer.alloc(32, 0x55);
26
+ /**
27
+ * Encrypts a single u64 value via the Ika Encrypt gRPC service and returns
28
+ * the on-chain ciphertext account pubkey.
29
+ *
30
+ * In pre-alpha mode the value is stored as plaintext — no real FHE yet.
31
+ * The returned pubkey is the `handlePda` that must be verified on-chain
32
+ * before it can be used in a confidential proposal.
33
+ *
34
+ * @param value The u64 value to encrypt (as a number or bigint).
35
+ * @param authorized The Solana pubkey authorized to use this ciphertext
36
+ * (typically the AURA program ID).
37
+ * @param grpcUrl Override the gRPC endpoint (defaults to devnet pre-alpha).
38
+ */
39
+ export async function encryptU64(value, authorized, grpcUrl = ENCRYPT_GRPC_URL) {
40
+ const client = createEncryptClient(grpcUrl);
41
+ try {
42
+ // Encode the value as 8 little-endian bytes (u64 LE)
43
+ const valueBuf = Buffer.alloc(8);
44
+ valueBuf.writeBigUInt64LE(BigInt(value), 0);
45
+ const result = await client.createInput({
46
+ chain: EncryptChain.Solana,
47
+ inputs: [
48
+ {
49
+ ciphertextBytes: valueBuf,
50
+ fheType: FHE_TYPE_UINT64,
51
+ },
52
+ ],
53
+ proof: Buffer.alloc(0),
54
+ authorized: authorized.toBuffer(),
55
+ networkEncryptionPublicKey: ENCRYPT_NETWORK_KEY,
56
+ });
57
+ if (!result.ciphertextIdentifiers[0] || result.ciphertextIdentifiers[0].length !== 32) {
58
+ throw new Error("Encrypt service returned an invalid ciphertext identifier");
59
+ }
60
+ return new PublicKey(result.ciphertextIdentifiers[0]);
61
+ }
62
+ finally {
63
+ client.close();
64
+ }
65
+ }
66
+ /**
67
+ * Encrypts multiple u64 values in a single gRPC call (more efficient than
68
+ * calling `encryptU64` separately for each value).
69
+ *
70
+ * Returns one pubkey per input value in the same order.
71
+ */
72
+ export async function encryptU64Batch(values, authorized, grpcUrl = ENCRYPT_GRPC_URL) {
73
+ if (values.length === 0) {
74
+ return [];
75
+ }
76
+ const client = createEncryptClient(grpcUrl);
77
+ try {
78
+ const inputs = values.map((value) => {
79
+ const valueBuf = Buffer.alloc(8);
80
+ valueBuf.writeBigUInt64LE(BigInt(value), 0);
81
+ return { ciphertextBytes: valueBuf, fheType: FHE_TYPE_UINT64 };
82
+ });
83
+ const result = await client.createInput({
84
+ chain: EncryptChain.Solana,
85
+ inputs,
86
+ proof: Buffer.alloc(0),
87
+ authorized: authorized.toBuffer(),
88
+ networkEncryptionPublicKey: ENCRYPT_NETWORK_KEY,
89
+ });
90
+ if (result.ciphertextIdentifiers.length !== values.length) {
91
+ throw new Error(`Encrypt service returned ${result.ciphertextIdentifiers.length} identifiers for ${values.length} inputs`);
92
+ }
93
+ return result.ciphertextIdentifiers.map((id) => {
94
+ if (!id || id.length !== 32) {
95
+ throw new Error("Encrypt service returned an invalid ciphertext identifier");
96
+ }
97
+ return new PublicKey(id);
98
+ });
99
+ }
100
+ finally {
101
+ client.close();
102
+ }
103
+ }
104
+ /**
105
+ * Reads a decrypted ciphertext value from the Encrypt network.
106
+ *
107
+ * In pre-alpha mode this returns the plaintext directly.
108
+ * The returned buffer contains the raw bytes (8 bytes for u64 LE).
109
+ *
110
+ * @param ciphertextId The on-chain ciphertext account pubkey.
111
+ * @param signer The pubkey authorized to read this ciphertext.
112
+ * @param grpcUrl Override the gRPC endpoint.
113
+ */
114
+ export async function readCiphertext(ciphertextId, signer, grpcUrl = ENCRYPT_GRPC_URL) {
115
+ const client = createEncryptClient(grpcUrl);
116
+ try {
117
+ // Build a BCS-encoded ReadCiphertextMessage
118
+ // In pre-alpha, signature and reencryption key can be zero-filled
119
+ const message = encodeReadCiphertextMessage(0, // chain = Solana
120
+ ciphertextId.toBuffer(), Buffer.alloc(32), // zero reencryption key (pre-alpha: plaintext returned directly)
121
+ 1n);
122
+ const result = await client.readCiphertext({
123
+ message,
124
+ signature: Buffer.alloc(64), // zero signature (pre-alpha: not validated)
125
+ signer: signer.toBuffer(),
126
+ });
127
+ return {
128
+ value: result.value,
129
+ fheType: result.fheType,
130
+ digest: result.digest,
131
+ };
132
+ }
133
+ finally {
134
+ client.close();
135
+ }
136
+ }
137
+ /**
138
+ * Reads a u64 ciphertext and returns the decoded value.
139
+ * Convenience wrapper around `readCiphertext` for u64 values.
140
+ */
141
+ export async function readU64Ciphertext(ciphertextId, signer, grpcUrl = ENCRYPT_GRPC_URL) {
142
+ const { value } = await readCiphertext(ciphertextId, signer, grpcUrl);
143
+ if (value.length < 8) {
144
+ throw new Error(`Expected 8 bytes for u64, got ${value.length}`);
145
+ }
146
+ return value.readBigUInt64LE(0);
147
+ }
148
+ /**
149
+ * Drives the dWallet presign + sign flow via the Ika dWallet gRPC service.
150
+ *
151
+ * This is called after `execute_pending` creates the `MessageApproval` account
152
+ * on-chain. The dWallet network processes the presign and sign requests and
153
+ * writes the signature back to the `MessageApproval` account.
154
+ *
155
+ * @param senderPubkey The Solana pubkey of the transaction sender (payer).
156
+ * @param dwalletAddr The on-chain dWallet account pubkey (32 bytes).
157
+ * @param message The message bytes to sign (keccak256 digest of the proposal).
158
+ * @param txSignature The Solana transaction signature from `execute_pending`
159
+ * (used as the approval proof).
160
+ * @param grpcUrl Override the gRPC endpoint.
161
+ * @returns The dWallet signature bytes.
162
+ */
163
+ export async function requestDwalletSign(senderPubkey, dwalletAddr, message, txSignature, grpcUrl = IKA_GRPC_URL) {
164
+ const client = createIkaClient(grpcUrl);
165
+ try {
166
+ const senderBytes = senderPubkey.toBuffer();
167
+ const dwalletBytes = dwalletAddr.toBuffer();
168
+ // Step 1: request presign
169
+ const presignId = await client.requestPresign(senderBytes, dwalletBytes);
170
+ // Step 2: request sign with the presign ID and approval proof
171
+ const signature = await client.requestSign(senderBytes, dwalletBytes, message, presignId, txSignature);
172
+ return Buffer.from(signature);
173
+ }
174
+ finally {
175
+ client.close();
176
+ }
177
+ }
178
+ //# sourceMappingURL=ika.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ika.js","sourceRoot":"","sources":["../src/ika.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,mBAAmB,EACnB,2BAA2B,EAC3B,KAAK,IAAI,YAAY,EACrB,yBAAyB,IAAI,gBAAgB,GAC9C,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,YAAY,GAAG,yCAAyC,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,CAAC;AAE1C;;;GAGG;AACH,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAsB,EACtB,UAAqB,EACrB,UAAkB,gBAAgB;IAElC,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC;QACH,qDAAqD;QACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC;YACtC,KAAK,EAAE,YAAY,CAAC,MAAM;YAC1B,MAAM,EAAE;gBACN;oBACE,eAAe,EAAE,QAAQ;oBACzB,OAAO,EAAE,eAAe;iBACzB;aACF;YACD,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtB,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE;YACjC,0BAA0B,EAAE,mBAAmB;SAChD,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACtF,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QAED,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAA2B,EAC3B,UAAqB,EACrB,UAAkB,gBAAgB;IAElC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5C,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC;YACtC,KAAK,EAAE,YAAY,CAAC,MAAM;YAC1B,MAAM;YACN,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtB,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE;YACjC,0BAA0B,EAAE,mBAAmB;SAChD,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,qBAAqB,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CACb,4BAA4B,MAAM,CAAC,qBAAqB,CAAC,MAAM,oBAAoB,MAAM,CAAC,MAAM,SAAS,CAC1G,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YAC7C,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;YAC/E,CAAC;YACD,OAAO,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,YAAuB,EACvB,MAAiB,EACjB,UAAkB,gBAAgB;IAElC,MAAM,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC;QACH,4CAA4C;QAC5C,kEAAkE;QAClE,MAAM,OAAO,GAAG,2BAA2B,CACzC,CAAC,EAAE,iBAAiB;QACpB,YAAY,CAAC,QAAQ,EAAE,EACvB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,iEAAiE;QACnF,EAAE,CACH,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC;YACzC,OAAO;YACP,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,4CAA4C;YACzE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;SAC1B,CAAC,CAAC;QAEH,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,KAAe;YAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAgB;SAChC,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,YAAuB,EACvB,MAAiB,EACjB,UAAkB,gBAAgB;IAElC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACtE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,YAAuB,EACvB,WAAsB,EACtB,OAAe,EACf,WAAmB,EACnB,UAAkB,YAAY;IAE9B,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QAC5C,MAAM,YAAY,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QAE5C,0BAA0B;QAC1B,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAEzE,8DAA8D;QAC9D,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,WAAW,CACxC,WAAW,EACX,YAAY,EACZ,OAAO,EACP,SAAS,EACT,WAAW,CACZ,CAAC;QAEF,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createProgram(): Command;
3
+ export declare function main(argv?: string[]): Promise<void>;
package/dist/index.js ADDED
@@ -0,0 +1,43 @@
1
+ import { Command } from "commander";
2
+ import { registerConfidentialCommands } from "./commands/confidential.js";
3
+ import { registerConfigCommands } from "./commands/config.js";
4
+ import { registerDashboardCommand } from "./commands/dashboard.js";
5
+ import { registerDwalletCommands } from "./commands/dwallet.js";
6
+ import { registerExecutionCommands } from "./commands/execution.js";
7
+ import { registerGovernanceCommands } from "./commands/governance.js";
8
+ import { registerTreasuryCommands } from "./commands/treasury.js";
9
+ import { printError } from "./output.js";
10
+ export function createProgram() {
11
+ const program = new Command();
12
+ program
13
+ .name("aura")
14
+ .description("Production-grade CLI for the AURA autonomous treasury program")
15
+ .version("0.1.0")
16
+ .showHelpAfterError()
17
+ .showSuggestionAfterError()
18
+ .option("--rpc-url <url>", "override RPC endpoint")
19
+ .option("--wallet <path>", "override keypair file path")
20
+ .option("--program-id <id>", "override AURA program ID")
21
+ .option("--cluster <name>", "cluster label for display")
22
+ .option("--json", "output machine-readable JSON")
23
+ .option("--quiet", "suppress non-error terminal output")
24
+ .option("--dry-run", "build and display the instruction without sending");
25
+ registerConfigCommands(program);
26
+ registerTreasuryCommands(program);
27
+ registerDwalletCommands(program);
28
+ registerConfidentialCommands(program);
29
+ registerExecutionCommands(program);
30
+ registerGovernanceCommands(program);
31
+ registerDashboardCommand(program);
32
+ return program;
33
+ }
34
+ export async function main(argv = process.argv) {
35
+ try {
36
+ await createProgram().parseAsync(argv);
37
+ }
38
+ catch (error) {
39
+ printError(error);
40
+ process.exitCode = 1;
41
+ }
42
+ }
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,MAAM,CAAC;SACZ,WAAW,CAAC,+DAA+D,CAAC;SAC5E,OAAO,CAAC,OAAO,CAAC;SAChB,kBAAkB,EAAE;SACpB,wBAAwB,EAAE;SAC1B,MAAM,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;SAClD,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;SACvD,MAAM,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;SACvD,MAAM,CAAC,kBAAkB,EAAE,2BAA2B,CAAC;SACvD,MAAM,CAAC,QAAQ,EAAE,8BAA8B,CAAC;SAChD,MAAM,CAAC,SAAS,EAAE,oCAAoC,CAAC;SACvD,MAAM,CAAC,WAAW,EAAE,mDAAmD,CAAC,CAAC;IAE5E,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACtC,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACpC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAElC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;IAC5C,IAAI,CAAC;QACH,MAAM,aAAa,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,CAAC,KAAK,CAAC,CAAC;QAClB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}