router-widget-sdk 0.1.1 → 0.1.3

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 (82) hide show
  1. package/dist/components/AppKitProvider.d.ts.map +1 -1
  2. package/dist/components/AppProviders.d.ts +15 -12
  3. package/dist/components/AppProviders.d.ts.map +1 -1
  4. package/dist/components/EVMProvider.d.ts +8 -0
  5. package/dist/components/EVMProvider.d.ts.map +1 -0
  6. package/dist/components/RouterWidget.d.ts +4 -21
  7. package/dist/components/RouterWidget.d.ts.map +1 -1
  8. package/dist/components/SDKProviders.d.ts +13 -0
  9. package/dist/components/SDKProviders.d.ts.map +1 -0
  10. package/dist/components/SVMBaseProvider.d.ts +13 -0
  11. package/dist/components/SVMBaseProvider.d.ts.map +1 -0
  12. package/dist/components/SVMProvider.d.ts +11 -0
  13. package/dist/components/SVMProvider.d.ts.map +1 -0
  14. package/dist/components/SuiProvider.d.ts +10 -0
  15. package/dist/components/SuiProvider.d.ts.map +1 -0
  16. package/dist/components/SwapInterface.d.ts.map +1 -1
  17. package/dist/components/SwapSplit.d.ts.map +1 -1
  18. package/dist/components/SwapWalletHeader.d.ts +12 -0
  19. package/dist/components/SwapWalletHeader.d.ts.map +1 -0
  20. package/dist/components/UTXOProvider.d.ts +10 -0
  21. package/dist/components/UTXOProvider.d.ts.map +1 -0
  22. package/dist/components/UnifiedWallet/ConnectWalletButton.d.ts.map +1 -1
  23. package/dist/components/WalletConnectionModal.d.ts.map +1 -1
  24. package/dist/components/WalletProvider.d.ts +16 -0
  25. package/dist/components/WalletProvider.d.ts.map +1 -0
  26. package/dist/components/ui/command.d.ts +1 -1
  27. package/dist/contexts/EVMExternalContext.d.ts +7 -0
  28. package/dist/contexts/EVMExternalContext.d.ts.map +1 -0
  29. package/dist/contexts/SVMExternalContext.d.ts +7 -0
  30. package/dist/contexts/SVMExternalContext.d.ts.map +1 -0
  31. package/dist/contexts/WalletModalContext.d.ts +12 -0
  32. package/dist/contexts/WalletModalContext.d.ts.map +1 -0
  33. package/dist/contexts/WalletProviderContext.d.ts +13 -0
  34. package/dist/contexts/WalletProviderContext.d.ts.map +1 -0
  35. package/dist/hooks/useAccountConnect.d.ts +16 -0
  36. package/dist/hooks/useAccountConnect.d.ts.map +1 -0
  37. package/dist/hooks/useAccountDisconnect.d.ts +15 -0
  38. package/dist/hooks/useAccountDisconnect.d.ts.map +1 -0
  39. package/dist/hooks/useInSolanaContext.d.ts +9 -0
  40. package/dist/hooks/useInSolanaContext.d.ts.map +1 -0
  41. package/dist/hooks/useInWagmiContext.d.ts +8 -0
  42. package/dist/hooks/useInWagmiContext.d.ts.map +1 -0
  43. package/dist/hooks/useInternalWalletProvider.d.ts +9 -0
  44. package/dist/hooks/useInternalWalletProvider.d.ts.map +1 -0
  45. package/dist/hooks/useSolanaWalletAdapter.d.ts +16 -0
  46. package/dist/hooks/useSolanaWalletAdapter.d.ts.map +1 -0
  47. package/dist/hooks/useTokenBalances.d.ts +1 -1
  48. package/dist/hooks/useWallet.d.ts +1 -2
  49. package/dist/hooks/useWallet.d.ts.map +1 -1
  50. package/dist/hooks/useWalletConnectTrigger.d.ts +10 -0
  51. package/dist/hooks/useWalletConnectTrigger.d.ts.map +1 -0
  52. package/dist/hooks/useWalletModal.d.ts +1 -1
  53. package/dist/hooks/useWalletModal.d.ts.map +1 -1
  54. package/dist/index.cjs.js +478 -320
  55. package/dist/index.esm.js +88812 -81001
  56. package/dist/lib/actions/handleSolanaTransactions.d.ts +4 -3
  57. package/dist/lib/actions/handleSolanaTransactions.d.ts.map +1 -1
  58. package/dist/lib/actions/submitSwapTransaction.d.ts +6 -4
  59. package/dist/lib/actions/submitSwapTransaction.d.ts.map +1 -1
  60. package/dist/lib/types/widget.d.ts +24 -0
  61. package/dist/lib/types/widget.d.ts.map +1 -1
  62. package/dist/lib/utils/item.d.ts +10 -0
  63. package/dist/lib/utils/item.d.ts.map +1 -0
  64. package/dist/lib/utils.d.ts +1 -1
  65. package/dist/lib/wallet/handlers/connect.d.ts +27 -0
  66. package/dist/lib/wallet/handlers/connect.d.ts.map +1 -0
  67. package/dist/lib/wallet/handlers/disconnect.d.ts +22 -0
  68. package/dist/lib/wallet/handlers/disconnect.d.ts.map +1 -0
  69. package/dist/lib/wallet/helpers.d.ts +10 -1
  70. package/dist/lib/wallet/helpers.d.ts.map +1 -1
  71. package/dist/lib/wallet/providers.d.ts +59 -0
  72. package/dist/lib/wallet/providers.d.ts.map +1 -0
  73. package/dist/lib/wallet/types.d.ts +17 -0
  74. package/dist/lib/wallet/types.d.ts.map +1 -1
  75. package/dist/network/config.d.ts +1 -1
  76. package/dist/network/config.d.ts.map +1 -1
  77. package/dist/styles.css +1 -1
  78. package/dist/types/wallet.d.ts +8 -5
  79. package/dist/types/wallet.d.ts.map +1 -1
  80. package/package.json +3 -1
  81. package/dist/components/WidgetProvider.d.ts +0 -29
  82. package/dist/components/WidgetProvider.d.ts.map +0 -1
@@ -1,15 +1,16 @@
1
1
  import { Connection } from "@solana/web3.js";
2
+ import type { SignerWalletAdapter } from "@solana/wallet-adapter-base";
2
3
  import { ApiResponse } from "../types/api";
3
4
  type HandleSolanaTransactionParams = {
4
5
  connection: Connection;
5
- signer: any;
6
+ signer: SignerWalletAdapter;
6
7
  apiResponse: ApiResponse<"sol">;
7
8
  };
8
9
  /**
9
10
  * Solana transaction handler
10
11
  *
11
- * TODO: Re-enable and update when implementing Solana support
12
- * TODO: Replace Dynamic ISolana with Solana wallet adapter
12
+ * Handles Solana transactions using SignerWalletAdapter from @solana/wallet-adapter-base
13
+ * Works with both internal and external Solana wallet adapters
13
14
  */
14
15
  declare const handleSolanaTransaction: ({ connection, signer, apiResponse, }: HandleSolanaTransactionParams) => Promise<{
15
16
  txHash: string;
@@ -1 +1 @@
1
- {"version":3,"file":"handleSolanaTransactions.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/handleSolanaTransactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmC,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAK3C,KAAK,6BAA6B,GAAG;IACnC,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC;IACZ,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;CACjC,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,uBAAuB,GAAU,sCAIpC,6BAA6B,KAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAqD5D,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"handleSolanaTransactions.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/handleSolanaTransactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmC,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,KAAK,6BAA6B,GAAG;IACnC,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;CACjC,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,uBAAuB,GAAU,sCAIpC,6BAA6B,KAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CA2D5D,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { Token, Chain, EvmTransactionResult } from "@/types";
2
2
  import type { WalletClient } from "viem";
3
+ import type { Connection } from "@solana/web3.js";
3
4
  type FinalResponse = {
4
5
  amount_in: string;
5
6
  amount_in_with_fee: string;
@@ -16,22 +17,23 @@ type FinalResponse = {
16
17
  };
17
18
  };
18
19
  interface SubmitSwapTransactionProps {
19
- walletClient: WalletClient;
20
+ walletClient?: WalletClient | null;
20
21
  finalResponse: FinalResponse;
21
22
  fromChain: Chain;
22
23
  fromToken: Token;
23
24
  nativeBalance: bigint;
24
25
  fromTokenBalance: bigint;
25
26
  dispatch?: (action: any) => void;
27
+ solanaSigner?: any;
28
+ solanaConnection?: Connection | null;
26
29
  }
27
30
  /**
28
31
  * Submit swap transaction handler
29
32
  *
30
- * Currently supports EVM-only via Wagmi WalletClient
33
+ * Supports EVM and Solana transactions
31
34
  *
32
- * TODO: Add Solana transaction handling when implementing Solana support
33
35
  * TODO: Add Bitcoin transaction handling when implementing Bitcoin support
34
36
  */
35
- export declare function submitSwapTransaction({ walletClient, finalResponse, fromChain, fromToken, nativeBalance, fromTokenBalance, dispatch, }: SubmitSwapTransactionProps): Promise<EvmTransactionResult>;
37
+ export declare function submitSwapTransaction({ walletClient, finalResponse, fromChain, fromToken, nativeBalance, fromTokenBalance, dispatch, solanaSigner, solanaConnection, }: SubmitSwapTransactionProps): Promise<EvmTransactionResult>;
36
38
  export {};
37
39
  //# sourceMappingURL=submitSwapTransaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"submitSwapTransaction.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/submitSwapTransaction.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAYzC,KAAK,aAAa,GAAG;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE;QAChB,QAAQ,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7B,WAAW,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QAChC,YAAY,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;KAClC,CAAC;CACH,CAAC;AAEF,UAAU,0BAA0B;IAClC,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,KAAK,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;CAMlC;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,EAC1C,YAAY,EACZ,aAAa,EACb,SAAS,EACT,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,QAAQ,GACT,EAAE,0BAA0B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAoG5D"}
1
+ {"version":3,"file":"submitSwapTransaction.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/submitSwapTransaction.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAUlD,KAAK,aAAa,GAAG;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE;QAChB,QAAQ,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7B,WAAW,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;QAChC,YAAY,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;KAClC,CAAC;CACH,CAAC;AAEF,UAAU,0BAA0B;IAClC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,SAAS,EAAE,KAAK,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IAEjC,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,gBAAgB,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAGtC;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,EAC1C,YAAY,EACZ,aAAa,EACb,SAAS,EACT,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,gBAAgB,GACjB,EAAE,0BAA0B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA8G5D"}
@@ -43,6 +43,30 @@ export interface WidgetConfig {
43
43
  * Selected nodes/bridges for routing
44
44
  */
45
45
  selectedNodes?: string[];
46
+ /**
47
+ * Wallet UX overrides for host apps that own wallet connection (e.g., Dynamic.xyz).
48
+ */
49
+ wallet?: {
50
+ /**
51
+ * Called when the user clicks "CONNECT WALLET" inside the widget while an external
52
+ * Wagmi context is detected (e.g., DynamicWagmiConnector). Use this to open the host
53
+ * app's wallet connect UI.
54
+ */
55
+ onConnectClick?: () => void;
56
+ };
46
57
  isWidget?: boolean;
58
+ /**
59
+ * Chain type restrictions
60
+ * If provided, only these chain types will be enabled
61
+ */
62
+ chains?: {
63
+ types?: string[];
64
+ };
65
+ /**
66
+ * Custom wallet providers (optional)
67
+ * If provided, these override the default providers
68
+ * Similar to LiFi's sdkConfig.providers
69
+ */
70
+ providers?: any[];
47
71
  }
48
72
  //# sourceMappingURL=widget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../../../src/lib/types/widget.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB;;OAEG;IACH,YAAY,CAAC,EAAE;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IAEF;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE;QACT,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;IAEF;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
1
+ {"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../../../src/lib/types/widget.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB;;OAEG;IACH,YAAY,CAAC,EAAE;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IAEF;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE;QACT,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;IAEF;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB;;OAEG;IACH,MAAM,CAAC,EAAE;QACP;;;;WAIG;QACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;KAC7B,CAAC;IAEF,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IAEF;;;;OAIG;IACH,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;CACnB"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Checks if an item (chain type) is allowed based on widget configuration
3
+ * Similar to LiFi's isItemAllowed utility
4
+ *
5
+ * @param chainType - The chain type to check (e.g., "evm", "sol", "btc")
6
+ * @param allowedTypes - Array of allowed chain types from widget config
7
+ * @returns true if the chain type is allowed, false otherwise
8
+ */
9
+ export declare function isItemAllowed(chainType: string, allowedTypes?: string[]): boolean;
10
+ //# sourceMappingURL=item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/item.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAMjF"}
@@ -11,7 +11,7 @@ export declare function getTimeDiffInSeconds(epoch: number): {
11
11
  };
12
12
  export declare function formatSecondsToHumanReadable(seconds: number): string;
13
13
  export declare const isNative: (address: string, type: string) => boolean;
14
- export declare const getNativeTokenAddress: (type: string) => "0x0000000000000000000000000000000000000000" | "11111111111111111111111111111111" | "" | "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI";
14
+ export declare const getNativeTokenAddress: (type: string) => "" | "0x0000000000000000000000000000000000000000" | "11111111111111111111111111111111" | "0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI";
15
15
  export declare const SUI_ADDRESS_LENGTH = 32;
16
16
  export declare function isValidSuiAddress(value: string): value is string;
17
17
  export declare function cn(...inputs: ClassValue[]): string;
@@ -0,0 +1,27 @@
1
+ import type { Connector } from "wagmi";
2
+ import type { WalletName } from "@solana/wallet-adapter-base";
3
+ /**
4
+ * EVM Connect Handler
5
+ * Connects to an EVM wallet using Wagmi connector
6
+ */
7
+ export declare function handleConnectEVM(connect: (options: {
8
+ connector: Connector;
9
+ }) => void, connectors: readonly Connector[], walletId?: string): Promise<void>;
10
+ /**
11
+ * Solana Connect Handler
12
+ * Connects to a Solana wallet using wallet adapter
13
+ */
14
+ export declare function handleConnectSolana(selectWallet: ((walletName: WalletName | null) => void) | undefined, walletId?: string): Promise<void>;
15
+ /**
16
+ * Bitcoin Connect Handler
17
+ * TODO: Implement when Bitcoin support is added
18
+ * @param walletId - Optional wallet ID to connect to
19
+ */
20
+ export declare function handleConnectBitcoin(walletId?: string): Promise<void>;
21
+ /**
22
+ * Sui Connect Handler
23
+ * TODO: Implement when Sui support is added
24
+ * @param walletId - Optional wallet ID to connect to
25
+ */
26
+ export declare function handleConnectSui(walletId?: string): Promise<void>;
27
+ //# sourceMappingURL=connect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../../src/lib/wallet/handlers/connect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAG9D;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,CAAC,OAAO,EAAE;IAAE,SAAS,EAAE,SAAS,CAAA;CAAE,KAAK,IAAI,EACpD,UAAU,EAAE,SAAS,SAAS,EAAE,EAChC,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAcf;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,CAAC,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,EACnE,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAGf"}
@@ -0,0 +1,22 @@
1
+ import type { Config } from "wagmi";
2
+ /**
3
+ * EVM Disconnect Handler
4
+ * Disconnects an EVM wallet using Wagmi
5
+ */
6
+ export declare function handleDisconnectEVM(wagmiConfig: Config): Promise<void>;
7
+ /**
8
+ * Solana Disconnect Handler
9
+ * Disconnects a Solana wallet using wallet adapter
10
+ */
11
+ export declare function handleDisconnectSolana(solanaDisconnect: (() => Promise<void>) | undefined): Promise<void>;
12
+ /**
13
+ * Bitcoin Disconnect Handler
14
+ * TODO: Implement when Bitcoin support is added
15
+ */
16
+ export declare function handleDisconnectBitcoin(): Promise<void>;
17
+ /**
18
+ * Sui Disconnect Handler
19
+ * TODO: Implement when Sui support is added
20
+ */
21
+ export declare function handleDisconnectSui(): Promise<void>;
22
+ //# sourceMappingURL=disconnect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disconnect.d.ts","sourceRoot":"","sources":["../../../../src/lib/wallet/handlers/disconnect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAKpC;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5E;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,gBAAgB,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,GAClD,OAAO,CAAC,IAAI,CAAC,CAIf;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAG7D;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGzD"}
@@ -1,5 +1,5 @@
1
1
  import type { Connector } from "wagmi";
2
- import type { WalletOption, WalletTagType } from "./types";
2
+ import type { WalletOption, WalletTagType, MultiChainWallet } from "./types";
3
3
  /**
4
4
  * Order in which wallet tags should be displayed in the UI.
5
5
  * Lower value means higher priority.
@@ -20,4 +20,13 @@ export declare function buildWalletOptions(params: {
20
20
  address?: string;
21
21
  lastConnectedConnectorId: string | null;
22
22
  }): WalletOption[];
23
+ /**
24
+ * Detects and merges wallets that support multiple chains (e.g., MetaMask for EVM + Solana)
25
+ */
26
+ export declare function mergeMultiChainWallets(evmWallets: WalletOption[], solanaWallets: Array<{
27
+ adapter: {
28
+ name: string;
29
+ icon?: any;
30
+ };
31
+ }>): MultiChainWallet[];
23
32
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/lib/wallet/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG3D;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAKnD,CAAC;AAEF,wBAAgB,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAW9E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAEpE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC,GAAG,YAAY,EAAE,CAsCjB"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/lib/wallet/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAI7E;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAKnD,CAAC;AAEF,wBAAgB,WAAW,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAW9E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAEpE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,UAAU,EAAE,SAAS,SAAS,EAAE,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC,GAAG,YAAY,EAAE,CAsCjB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,YAAY,EAAE,EAC1B,aAAa,EAAE,KAAK,CAAC;IAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,GAAG,CAAA;KAAE,CAAA;CAAE,CAAC,GAC9D,gBAAgB,EAAE,CAiEpB"}
@@ -0,0 +1,59 @@
1
+ import type { WalletClient } from "viem";
2
+ import type { Connection } from "@solana/web3.js";
3
+ export type SolanaSigner = any;
4
+ export type BitcoinWallet = any;
5
+ /**
6
+ * EVM Provider Interface
7
+ * Similar to LiFi's EVM provider
8
+ */
9
+ export interface EVMProvider {
10
+ type: "evm";
11
+ getWalletClient: () => Promise<WalletClient | null>;
12
+ switchChain?: (chainId: number) => Promise<WalletClient | null>;
13
+ }
14
+ /**
15
+ * Solana Provider Interface
16
+ * Similar to LiFi's Solana provider
17
+ */
18
+ export interface SolanaProvider {
19
+ type: "solana";
20
+ getWalletAdapter: () => Promise<{
21
+ signer: SolanaSigner | null;
22
+ connection: Connection | null;
23
+ } | null>;
24
+ }
25
+ /**
26
+ * Bitcoin Provider Interface
27
+ * Similar to LiFi's UTXO provider
28
+ */
29
+ export interface BitcoinProvider {
30
+ type: "bitcoin";
31
+ getWalletClient: () => Promise<BitcoinWallet | null>;
32
+ }
33
+ export type WalletProvider = EVMProvider | SolanaProvider | BitcoinProvider;
34
+ /**
35
+ * Factory function to create EVM provider
36
+ * Similar to LiFi's EVM() factory
37
+ */
38
+ export declare function createEVMProvider({ getWalletClient, switchChain, }: {
39
+ getWalletClient: () => Promise<WalletClient | null>;
40
+ switchChain?: (chainId: number) => Promise<WalletClient | null>;
41
+ }): EVMProvider;
42
+ /**
43
+ * Factory function to create Solana provider
44
+ * Similar to LiFi's Solana() factory
45
+ */
46
+ export declare function createSolanaProvider({ getWalletAdapter, }: {
47
+ getWalletAdapter: () => Promise<{
48
+ signer: SolanaSigner | null;
49
+ connection: Connection | null;
50
+ } | null>;
51
+ }): SolanaProvider;
52
+ /**
53
+ * Factory function to create Bitcoin provider
54
+ * Similar to LiFi's UTXO() factory
55
+ */
56
+ export declare function createBitcoinProvider({ getWalletClient, }: {
57
+ getWalletClient: () => Promise<BitcoinWallet | null>;
58
+ }): BitcoinProvider;
59
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../src/lib/wallet/providers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD,MAAM,MAAM,YAAY,GAAG,GAAG,CAAC;AAC/B,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC;AAEhC;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,KAAK,CAAC;IACZ,eAAe,EAAE,MAAM,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACpD,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;CACjE;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,gBAAgB,EAAE,MAAM,OAAO,CAAC;QAC9B,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;QAC5B,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;KAC/B,GAAG,IAAI,CAAC,CAAC;CACX;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,CAAC;IAChB,eAAe,EAAE,MAAM,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;CACtD;AAED,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,cAAc,GAAG,eAAe,CAAC;AAE5E;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,eAAe,EACf,WAAW,GACZ,EAAE;IACD,eAAe,EAAE,MAAM,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACpD,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;CACjE,GAAG,WAAW,CAMd;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,gBAAgB,GACjB,EAAE;IACD,gBAAgB,EAAE,MAAM,OAAO,CAAC;QAC9B,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;QAC5B,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;KAC/B,GAAG,IAAI,CAAC,CAAC;CACX,GAAG,cAAc,CAKjB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,eAAe,GAChB,EAAE;IACD,eAAe,EAAE,MAAM,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;CACtD,GAAG,eAAe,CAKlB"}
@@ -1,4 +1,6 @@
1
1
  import type { Connector } from "wagmi";
2
+ import type React from "react";
3
+ import { ChainType } from "@/types/chains";
2
4
  /**
3
5
  * High-level categories for how a wallet appears in the UI.
4
6
  */
@@ -11,4 +13,19 @@ export interface WalletOption {
11
13
  isInstalled: boolean;
12
14
  tag: WalletTagType;
13
15
  }
16
+ /**
17
+ * Multi-chain wallet that supports multiple blockchain types (e.g., MetaMask for EVM + Solana)
18
+ */
19
+ export interface MultiChainWallet {
20
+ name: string;
21
+ id: string;
22
+ icon?: string | React.ComponentType<React.SVGProps<SVGSVGElement> | {
23
+ className?: string;
24
+ }>;
25
+ chains: ChainType[];
26
+ evmConnector?: Connector;
27
+ solanaAdapter?: any;
28
+ isInstalled: boolean;
29
+ tag: WalletTagType;
30
+ }
14
31
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/wallet/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,cAAc,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,GAAG,EAAE,aAAa,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/wallet/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,cAAc,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,GAAG,EAAE,aAAa,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5F,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,GAAG,EAAE,aAAa,CAAC;CACpB"}
@@ -1,6 +1,5 @@
1
1
  import { defineChain } from "viem";
2
2
  declare const SUPPORTED_NETWORK: string;
3
- declare const SUPPORTED_CHAINS: string[];
4
3
  declare const networkConfig: ({
5
4
  chainId: string;
6
5
  name: string;
@@ -515,6 +514,7 @@ declare const networkConfig: ({
515
514
  blockProductionLagging?: undefined;
516
515
  })[];
517
516
  declare const chainConfigsByType: Record<string, ReturnType<typeof defineChain>[]>;
517
+ declare const SUPPORTED_CHAINS: string[];
518
518
  export declare const getNetworkConfig: (chainId: string) => any;
519
519
  export declare const getChainConfig: (chainId: string) => ReturnType<typeof defineChain>;
520
520
  export declare const getAllSupportedChains: () => any[];
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/network/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAGnC,QAAA,MAAM,iBAAiB,QAAgD,CAAA;AAGvE,QAAA,MAAM,gBAAgB,UAAyF,CAAC;AAQhH,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAW,CAAC;AAS/B,QAAA,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,EAAE,CAAM,CAAC;AAyDhF,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,QAE/C,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,SAAS,MAAM,KAAG,UAAU,CAAC,OAAO,WAAW,CAM7E,CAAC;AAEF,eAAO,MAAM,qBAAqB,aAEjC,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,WAAW,MAAM,UAEhD,CAAC;AAGF,eAAO,MAAM,0BAA0B,aAEtC,CAAC;AAGF,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,KAAG,OAElD,CAAC;AAGF,eAAO,MAAM,oBAAoB,QAAO,MAAM,EAE7C,CAAC;AAGF,eAAO,MAAM,uBAAuB,aAKnC,CAAC;AAGF,eAAO,MAAM,4BAA4B,aAKxC,CAAC;AAGF,eAAO,MAAM,sBAAsB,GAAI,SAAS,MAAM,KAAG,OAExD,CAAC;AAGF,eAAO,MAAM,2BAA2B,GAAI,SAAS,MAAM,KAAG,OAE7D,CAAC;AAIF,OAAO,EACL,aAAa,EAEb,kBAAkB,IAAI,YAAY,EAClC,gBAAgB,EAChB,iBAAiB,EAClB,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/network/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAGnC,QAAA,MAAM,iBAAiB,QAAkD,CAAA;AAWzE,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAW,CAAC;AAS/B,QAAA,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,EAAE,CAAM,CAAC;AAKhF,QAAA,MAAM,gBAAgB,UAMoB,CAAC;AA8D3C,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,QAE/C,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,SAAS,MAAM,KAAG,UAAU,CAAC,OAAO,WAAW,CAM7E,CAAC;AAEF,eAAO,MAAM,qBAAqB,aAEjC,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,WAAW,MAAM,UAEhD,CAAC;AAGF,eAAO,MAAM,0BAA0B,aAEtC,CAAC;AAGF,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,KAAG,OAElD,CAAC;AAGF,eAAO,MAAM,oBAAoB,QAAO,MAAM,EAE7C,CAAC;AAGF,eAAO,MAAM,uBAAuB,aAKnC,CAAC;AAGF,eAAO,MAAM,4BAA4B,aAKxC,CAAC;AAGF,eAAO,MAAM,sBAAsB,GAAI,SAAS,MAAM,KAAG,OAExD,CAAC;AAGF,eAAO,MAAM,2BAA2B,GAAI,SAAS,MAAM,KAAG,OAE7D,CAAC;AAIF,OAAO,EACH,aAAa,EAEb,kBAAkB,IAAI,YAAY,EAClC,gBAAgB,EAChB,iBAAiB,EACpB,CAAC"}