@dipansrimany/mlink-sdk 0.1.1 → 0.3.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,208 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { E as EVMTransaction, C as ChainConfig, A as ActionMetadata } from '../types-CAnUIaVe.js';
3
+ import React from 'react';
4
+
5
+ type MlinkStatus = 'idle' | 'loading' | 'ready' | 'executing' | 'success' | 'error';
6
+ interface MlinkInstance {
7
+ status: MlinkStatus;
8
+ metadata: ActionMetadata | null;
9
+ error: string | null;
10
+ url: string;
11
+ refresh: () => Promise<void>;
12
+ }
13
+ interface MlinkAdapter {
14
+ connect: () => Promise<string>;
15
+ signAndSendTransaction: (transaction: EVMTransaction) => Promise<string>;
16
+ isConnected: () => boolean;
17
+ getAddress: () => string | null;
18
+ }
19
+ interface WagmiAdapterConfig {
20
+ sendTransaction: (args: {
21
+ to: `0x${string}`;
22
+ value: bigint;
23
+ data: `0x${string}`;
24
+ chainId: number;
25
+ }) => Promise<`0x${string}`>;
26
+ address: `0x${string}` | undefined;
27
+ isConnected: boolean;
28
+ connect: () => Promise<void>;
29
+ }
30
+ interface EthersAdapterConfig {
31
+ signer: {
32
+ getAddress: () => Promise<string>;
33
+ sendTransaction: (tx: {
34
+ to: string;
35
+ value: bigint;
36
+ data: string;
37
+ chainId: number;
38
+ }) => Promise<{
39
+ hash: string;
40
+ wait: () => Promise<unknown>;
41
+ }>;
42
+ } | null;
43
+ connect: () => Promise<void>;
44
+ }
45
+ interface MlinkTheme {
46
+ '--mlink-bg-primary': string;
47
+ '--mlink-bg-secondary': string;
48
+ '--mlink-border-color': string;
49
+ '--mlink-text-primary': string;
50
+ '--mlink-text-secondary': string;
51
+ '--mlink-text-link': string;
52
+ '--mlink-button-bg': string;
53
+ '--mlink-button-text': string;
54
+ '--mlink-button-hover': string;
55
+ '--mlink-button-disabled': string;
56
+ '--mlink-input-bg': string;
57
+ '--mlink-input-border': string;
58
+ '--mlink-input-text': string;
59
+ '--mlink-input-placeholder': string;
60
+ '--mlink-success': string;
61
+ '--mlink-error': string;
62
+ '--mlink-warning': string;
63
+ '--mlink-border-radius': string;
64
+ '--mlink-button-radius': string;
65
+ '--mlink-input-radius': string;
66
+ '--mlink-shadow': string;
67
+ }
68
+ type MlinkThemePreset = 'light' | 'dark' | 'mantle';
69
+ interface MlinkProviderConfig {
70
+ theme?: Partial<MlinkTheme> | MlinkThemePreset;
71
+ defaultChain?: ChainConfig;
72
+ }
73
+ interface MlinkProps {
74
+ url: string;
75
+ adapter: MlinkAdapter;
76
+ theme?: Partial<MlinkTheme> | MlinkThemePreset;
77
+ onSuccess?: (txHash: string, action: string) => void;
78
+ onError?: (error: string) => void;
79
+ className?: string;
80
+ stylePreset?: 'default' | 'compact' | 'minimal';
81
+ }
82
+ interface ActionButtonProps {
83
+ label: string;
84
+ value: string;
85
+ type: 'button' | 'input';
86
+ placeholder?: string;
87
+ disabled?: boolean;
88
+ loading?: boolean;
89
+ onClick: (value: string, input?: string) => void;
90
+ }
91
+ interface ExecutionResult {
92
+ success: boolean;
93
+ txHash?: string;
94
+ error?: string;
95
+ message?: string;
96
+ }
97
+ interface UseMlinkOptions {
98
+ refreshInterval?: number;
99
+ enabled?: boolean;
100
+ }
101
+ interface UseExecuteMlinkReturn {
102
+ execute: (action: string, input?: string) => Promise<ExecutionResult>;
103
+ status: MlinkStatus;
104
+ txHash: string | null;
105
+ error: string | null;
106
+ reset: () => void;
107
+ }
108
+
109
+ declare function Mlink({ url, adapter, theme: themeProp, onSuccess, onError, className, stylePreset, }: MlinkProps): react_jsx_runtime.JSX.Element;
110
+
111
+ interface MlinkContextValue {
112
+ theme: MlinkTheme;
113
+ defaultChain: ChainConfig;
114
+ }
115
+ interface MlinkProviderProps extends MlinkProviderConfig {
116
+ children: React.ReactNode;
117
+ }
118
+ declare function MlinkProvider({ children, theme, defaultChain, }: MlinkProviderProps): react_jsx_runtime.JSX.Element;
119
+ declare function useMlinkContext(): MlinkContextValue;
120
+
121
+ declare function useMlink(url: string, options?: UseMlinkOptions): MlinkInstance;
122
+
123
+ interface UseExecuteMlinkOptions {
124
+ adapter: MlinkAdapter;
125
+ actionUrl: string;
126
+ onSuccess?: (txHash: string, action: string) => void;
127
+ onError?: (error: string) => void;
128
+ }
129
+ declare function useExecuteMlink(options: UseExecuteMlinkOptions): UseExecuteMlinkReturn;
130
+
131
+ /**
132
+ * Create a Mlink adapter from wagmi hooks
133
+ *
134
+ * @example
135
+ * ```tsx
136
+ * import { useAccount, useConnect, useSendTransaction } from 'wagmi';
137
+ * import { useMlinkWagmiAdapter } from '@dipansrimany/mlink-sdk/react';
138
+ *
139
+ * function MyComponent() {
140
+ * const { address, isConnected } = useAccount();
141
+ * const { connectAsync, connectors } = useConnect();
142
+ * const { sendTransactionAsync } = useSendTransaction();
143
+ *
144
+ * const adapter = useMlinkWagmiAdapter({
145
+ * address,
146
+ * isConnected,
147
+ * connect: async () => {
148
+ * await connectAsync({ connector: connectors[0] });
149
+ * },
150
+ * sendTransaction: sendTransactionAsync,
151
+ * });
152
+ *
153
+ * return <Mlink url="..." adapter={adapter} />;
154
+ * }
155
+ * ```
156
+ */
157
+ declare function useMlinkWagmiAdapter(config: WagmiAdapterConfig): MlinkAdapter;
158
+ /**
159
+ * Create a Mlink adapter from ethers.js signer
160
+ *
161
+ * @example
162
+ * ```tsx
163
+ * import { useSigner } from 'some-ethers-provider';
164
+ * import { useMlinkEthersAdapter } from '@dipansrimany/mlink-sdk/react';
165
+ *
166
+ * function MyComponent() {
167
+ * const { signer, connect } = useSigner();
168
+ *
169
+ * const adapter = useMlinkEthersAdapter({
170
+ * signer,
171
+ * connect,
172
+ * });
173
+ *
174
+ * return <Mlink url="..." adapter={adapter} />;
175
+ * }
176
+ * ```
177
+ */
178
+ declare function useMlinkEthersAdapter(config: EthersAdapterConfig): MlinkAdapter;
179
+ /**
180
+ * Create a custom Mlink adapter
181
+ *
182
+ * @example
183
+ * ```tsx
184
+ * import { createMlinkAdapter } from '@dipansrimany/mlink-sdk/react';
185
+ *
186
+ * const adapter = createMlinkAdapter({
187
+ * connect: async () => {
188
+ * // Your connect logic
189
+ * return '0x...';
190
+ * },
191
+ * signAndSendTransaction: async (tx) => {
192
+ * // Your transaction logic
193
+ * return '0x...txHash';
194
+ * },
195
+ * isConnected: () => true,
196
+ * getAddress: () => '0x...',
197
+ * });
198
+ * ```
199
+ */
200
+ declare function createMlinkAdapter(adapter: MlinkAdapter): MlinkAdapter;
201
+
202
+ declare const lightTheme: MlinkTheme;
203
+ declare const darkTheme: MlinkTheme;
204
+ declare const mantleTheme: MlinkTheme;
205
+ declare const themePresets: Record<MlinkThemePreset, MlinkTheme>;
206
+ declare function resolveTheme(theme?: Partial<MlinkTheme> | MlinkThemePreset): MlinkTheme;
207
+
208
+ export { type ActionButtonProps, type EthersAdapterConfig, type ExecutionResult, Mlink, type MlinkAdapter, Mlink as MlinkComponent, type MlinkInstance, type MlinkProps, MlinkProvider, type MlinkProviderConfig, type MlinkStatus, type MlinkTheme, type MlinkThemePreset, type UseExecuteMlinkReturn, type UseMlinkOptions, type WagmiAdapterConfig, createMlinkAdapter, darkTheme, lightTheme, mantleTheme, resolveTheme, themePresets, useExecuteMlink, useMlink, useMlinkContext, useMlinkEthersAdapter, useMlinkWagmiAdapter };