@bananapus/nana-sdk-core 2.23.0 → 2.24.1

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.
@@ -0,0 +1,144 @@
1
+ import { type Address, type Hex, type PublicClient } from "viem";
2
+ import { type SafeTransactionMessage } from "../safeService.js";
3
+ import { type RelayrEntry, type RelayrPayment, type RelayrQuote, type RelayrReleaseClient, type RelayrSentPayment, type RelayrTransactionRecord, type RelayrTransactionBinding, type RelayrProofClient, type RelayrVerifiedDestination } from "./relayr.js";
4
+ /** Exact frozen calldata plus the Safe intent it executes. Context belongs to the app. */
5
+ export type SafeRelayrExecution = {
6
+ entry: RelayrEntry;
7
+ safe: Address;
8
+ safeTxHash: Hex;
9
+ nonce: number;
10
+ context?: unknown;
11
+ };
12
+ /** Normalized durable state. Adapters retain their existing storage schema and metadata. */
13
+ export type SafeRelayrSession = {
14
+ id: string;
15
+ account: Address;
16
+ executions: SafeRelayrExecution[];
17
+ quote?: RelayrQuote;
18
+ bundleUuid?: string;
19
+ paymentStatus: "unfunded" | "sending" | "submitted" | "confirmed" | "reverted" | "expired";
20
+ payments: RelayrSentPayment[];
21
+ state: "publishing" | "active" | "complete" | "released";
22
+ /** Obsolete Safe nonces do not prove execution success, quote expiry, or a refund. */
23
+ releaseReason?: "quote-expired" | "safe-nonces-consumed";
24
+ createdAt: number;
25
+ records?: RelayrTransactionRecord[];
26
+ /** Conservative legacy reservations when exact execution proof is unavailable. */
27
+ reservationKeys?: string[];
28
+ context?: unknown;
29
+ };
30
+ export type SafeRelayrStore = {
31
+ /** Include unresolved legacy reservations, including those made by other accounts. */
32
+ list(account: Address): Promise<SafeRelayrSession[]>;
33
+ /** Must finish durable persistence before resolving; never silently swallow failure. */
34
+ save(session: SafeRelayrSession): Promise<void>;
35
+ /** Serialize overlapping Safe scopes across tabs AND accounts. An account-only lock is insufficient; retain legacy locks too. */
36
+ withLock<T>(account: Address, run: () => Promise<T>): Promise<T>;
37
+ };
38
+ export type SafeRelayrResult = {
39
+ state: "ready" | "pending" | "complete" | "released";
40
+ session: SafeRelayrSession;
41
+ payments: RelayrPayment[];
42
+ recovery?: SafeRelayrRecovery;
43
+ };
44
+ /** Read-only evidence when the saved publication cannot identify an exact quote. */
45
+ export type SafeRelayrRecovery = {
46
+ reason: "missing-execution-proof" | "safe-nonces-live" | "safe-nonces-mixed" | "safe-nonces-unavailable" | "safe-nonces-consumed" | "funding-unresolved";
47
+ message: string;
48
+ checks?: {
49
+ chainId: number;
50
+ safe: Address;
51
+ nonce: number;
52
+ currentNonce?: string;
53
+ state: "consumed" | "live" | "unavailable";
54
+ }[];
55
+ };
56
+ export type SafeRelayrReady = SafeRelayrResult & {
57
+ state: "ready";
58
+ resumed: boolean;
59
+ };
60
+ export type SafeRelayrStatus = (index: number, state: "checking" | "ready" | "rechecking" | "failed", execution: SafeRelayrExecution) => void;
61
+ export type SafeRelayrOptions = {
62
+ store: SafeRelayrStore;
63
+ clientFor: (chainId: number) => (RelayrReleaseClient & Partial<Pick<PublicClient, "request">>) | undefined;
64
+ fetch?: typeof globalThis.fetch;
65
+ currentAccount: () => Address | undefined;
66
+ /** Check live Safe nonce/policy, app permissions, and simulate this ORIGINAL calldata. */
67
+ revalidate: (execution: SafeRelayrExecution, account: Address) => Promise<void>;
68
+ /** Explicit user review of precisely these frozen calls. No wallet submission. */
69
+ review: (executions: readonly SafeRelayrExecution[], options: {
70
+ resumed: boolean;
71
+ }) => Promise<unknown>;
72
+ /**
73
+ * Guarded wallet adapter. Await beforeSend after wallet review, then onSending
74
+ * immediately before wallet invocation. Await onSent whenever a hash (including
75
+ * a replacement) becomes known. Retain the application's payment review,
76
+ * runtime authentication, simulation, and account checks.
77
+ */
78
+ sendPayment: (options: {
79
+ session: SafeRelayrSession;
80
+ payment: RelayrPayment;
81
+ beforeSend: () => Promise<void>;
82
+ onSending: () => Promise<void>;
83
+ onSent: (payments: RelayrSentPayment[]) => Promise<void>;
84
+ }) => Promise<{
85
+ hash: Hex;
86
+ payments: RelayrSentPayment[];
87
+ }>;
88
+ /** App receipt guards run only after every exact destination and Safe event is proven. */
89
+ afterVerified?: (execution: SafeRelayrExecution, verified: RelayrVerifiedDestination) => Promise<void>;
90
+ createId?: () => string;
91
+ };
92
+ export declare class SafeRelayrRecoveryError extends Error {
93
+ readonly session: SafeRelayrSession;
94
+ readonly recovery?: SafeRelayrRecovery | undefined;
95
+ readonly name = "SafeRelayrRecoveryError";
96
+ constructor(session: SafeRelayrSession, message?: string, recovery?: SafeRelayrRecovery | undefined);
97
+ }
98
+ /** A nonce reserves its Safe on its chain even when signature bytes or the proposed intent change. */
99
+ export declare function safeRelayrReservationKey(execution: Pick<SafeRelayrExecution, "entry" | "safe" | "nonce">): string;
100
+ /** Reuse requires the complete one-to-one intent set. Subsets and supersets conflict. */
101
+ export declare function sameSafeRelayrIntents(left: readonly SafeRelayrExecution[], right: readonly SafeRelayrExecution[]): boolean;
102
+ /** Authenticate execTransaction's signed fields against the expected Safe EIP-712 hash. */
103
+ export declare function requireSafeRelayrExecution(execution: SafeRelayrExecution): SafeTransactionMessage;
104
+ /** Exact live nonce/hash guards for adapters that perform eth_call preconditions. */
105
+ export declare function safeRelayrPreconditions(execution: SafeRelayrExecution): {
106
+ address: Address;
107
+ data: Hex;
108
+ expected: Hex;
109
+ }[];
110
+ /** Canonical exact destination receipts plus matching, refund-free Safe success events. */
111
+ export declare function verifySafeRelayrLanding(clientFor: (chainId: number) => RelayrProofClient | undefined, { executions, bindings, records, }: {
112
+ executions: readonly SafeRelayrExecution[];
113
+ bindings: readonly RelayrTransactionBinding[];
114
+ records: readonly RelayrTransactionRecord[];
115
+ }): Promise<RelayrVerifiedDestination[]>;
116
+ /** Shared Safe Relayr state machine. It never signs Safe proposals or submits on prepare/check. */
117
+ export declare function createSafeRelayrController(options: SafeRelayrOptions): {
118
+ prepare: ({ account, executions: input, signal, onStatus, }: {
119
+ account: Address;
120
+ executions: readonly SafeRelayrExecution[];
121
+ signal?: AbortSignal;
122
+ onStatus?: SafeRelayrStatus;
123
+ }) => Promise<SafeRelayrReady>;
124
+ check: ({ account, sessionId, }: {
125
+ account: Address;
126
+ sessionId: string;
127
+ }) => Promise<SafeRelayrResult>;
128
+ fund: ({ account, sessionId, paymentChainId, signal, onStatus, }: {
129
+ account: Address;
130
+ sessionId: string;
131
+ paymentChainId: number;
132
+ signal?: AbortSignal;
133
+ onStatus?: SafeRelayrStatus;
134
+ }) => Promise<SafeRelayrResult>;
135
+ watch: ({ account, sessionId, signal, onUpdate, intervalMs, timeoutMs, }: {
136
+ account: Address;
137
+ sessionId: string;
138
+ signal?: AbortSignal;
139
+ onUpdate?: (result: SafeRelayrResult) => void | Promise<void>;
140
+ intervalMs?: number;
141
+ timeoutMs?: number;
142
+ }) => Promise<SafeRelayrResult>;
143
+ };
144
+ //# sourceMappingURL=safeRelayr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safeRelayr.d.ts","sourceRoot":"","sources":["../../../src/review/safeRelayr.ts"],"names":[],"mappings":"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"}