diff --git a/packages/use-solana/package.json b/packages/use-solana/package.json index ed71eb9c..023a3e5e 100644 --- a/packages/use-solana/package.json +++ b/packages/use-solana/package.json @@ -38,6 +38,7 @@ "@solana/wallet-adapter-brave": "0.1.10", "@solana/wallet-adapter-clover": "^0.4.12", "@solana/wallet-adapter-coin98": "^0.5.13", + "@solana/wallet-adapter-coinbase": "^0.1.5", "@solana/wallet-adapter-exodus": "^0.1.11", "@solana/wallet-adapter-glow": "^0.1.11", "@solana/wallet-adapter-huobi": "^0.1.8", diff --git a/packages/use-solana/src/providers.ts b/packages/use-solana/src/providers.ts index 42fb4ad2..985de407 100644 --- a/packages/use-solana/src/providers.ts +++ b/packages/use-solana/src/providers.ts @@ -3,6 +3,7 @@ import { BRAVEWALLET, CLOVER, COIN98, + COINBASEWALLET, EXODUS, FILE, GLOW, @@ -20,6 +21,7 @@ import type { WalletAdapterNetwork } from "@solana/wallet-adapter-base"; import { BraveWalletAdapter } from "@solana/wallet-adapter-brave"; import { CloverWalletAdapter } from "@solana/wallet-adapter-clover"; import { Coin98WalletAdapter } from "@solana/wallet-adapter-coin98"; +import { CoinbaseWalletAdapter } from "@solana/wallet-adapter-coinbase"; import { ExodusWalletAdapter } from "@solana/wallet-adapter-exodus"; import { GlowWalletAdapter } from "@solana/wallet-adapter-glow"; import { HuobiWalletAdapter } from "@solana/wallet-adapter-huobi"; @@ -44,6 +46,7 @@ export enum DefaultWalletType { BraveWallet = "BraveWallet", Clover = "Clover", Coin98 = "Coin98", + CoinbaseWallet = "CoinbaseWallet", Exodus = "Exodus", Glow = "Glow", Huobi = "Huobi", @@ -161,6 +164,14 @@ export const DEFAULT_WALLET_PROVIDERS: WalletProviderMap< isInstalled: () => window.coin98 !== undefined, isMobile: true, }, + [DefaultWalletType.CoinbaseWallet]: { + name: "Coinbase Wallet", + url: "https://www.coinbase.com/wallet", + icon: COINBASEWALLET, + makeAdapter: () => new SolanaWalletAdapter(new CoinbaseWalletAdapter()), + isInstalled: () => window.coinbaseSolana !== undefined, + isMobile: true, + }, [DefaultWalletType.Clover]: { name: "Clover", url: "https://clover.finance", diff --git a/packages/use-solana/src/typings/window.d.ts b/packages/use-solana/src/typings/window.d.ts index 10a4a942..f618c4df 100644 --- a/packages/use-solana/src/typings/window.d.ts +++ b/packages/use-solana/src/typings/window.d.ts @@ -9,6 +9,19 @@ type ConnectOptions = { onlyIfTrusted?: boolean; }; +export interface CoinbaseWalletProvider { + publicKey?: PublicKey; + signTransaction(transaction: Transaction): Promise; + signAllTransactions(transactions: Transaction[]): Promise; + signAndSendTransaction( + transaction: Transaction, + options?: SendOptions + ): Promise<{ signature: TransactionSignature }>; + signMessage(message: Uint8Array): Promise<{ signature: Uint8Array }>; + connect(): Promise; + disconnect(): Promise; +} + type ExodusEvent = "accountChanged" | "connect" | "disconnect"; type ExodusRequestMethod = | "connect" @@ -122,6 +135,7 @@ declare global { disconnect: () => void; }; }; + coinbaseSolana?: CoinbaseWalletProvider; clover_solana?: { signAllTransactions?: (txs: Transaction[]) => Promise; signTransaction: (tx: Transaction) => Promise; diff --git a/packages/wallet-adapter-icons/src/index.tsx b/packages/wallet-adapter-icons/src/index.tsx index f67baa98..9605abde 100644 --- a/packages/wallet-adapter-icons/src/index.tsx +++ b/packages/wallet-adapter-icons/src/index.tsx @@ -201,6 +201,27 @@ export const PHANTOM: React.FC> = (props) => ( ); +export const COINBASEWALLET: React.FC> = ( + props +) => ( + + + + +); + export const SLOPE: React.FC> = (props) => (