Skip to content

createWallet

A função createWallet inicializa a carteira embutida e expõe os providers web3 à página web.

Exemplo

ts
import { createWallet } from '@money-sdk/core'

const wallet = createWallet({
  appId: '<YOUR_APP_ID>',
  providers: {
    bitcoin: true,
    ethereum: true,
    solana: true,
  },
})

const ethereumProvider = await wallet.getProvider('ethereum')

ethereumProvider.request(/* ... */)

Referência

appId

Identificador da sua aplicação. Ele permite que sua integração tenha suas próprias configurações — origens pai permitidas, feature flags e escopo de analytics por dApp.

INFO

Isso só é obrigatório para produção. Consulte o guia do App ID para o registro. Você pode omiti-lo durante o desenvolvimento local; a carteira será carregada com uma lista de permissões restrita a localhost.

walletUrl

Origem do iframe da carteira Drop. O padrão é https://dropwallet.app.

Só sobrescreva isso para apontar para um deployment de preview ou uma instância local da carteira — dApps em produção sempre devem manter o padrão.

signerUrl

Origem do popup do signer Drop usado para fluxos de passkey. O padrão é o signer canônico. As mesmas regras de walletUrl se aplicam.

providers

Lista dos providers web3 que você deseja expor ao seu dApp, com sua configuração opcional.

Ethereum e redes compatíveis com EVM

Por padrão, um provider EIP-1193 é retornado.

Exemplo
ts
const wallet = createWallet({
  providers: {
    ethereum: true,
  },
})

const ethereumProvider = await wallet.getProvider('ethereum')

ethereumProvider.request(/* ... */)

Além disso, o provider é anunciado à página web seguindo o EIP-6963. Se quiser desativar esse comportamento, passe a opção eip6963.

Exemplo
ts
const wallet = createWallet({
  providers: {
    ethereum: {
      eip6963: false,
    },
  },
})

Se seu dApp espera que o provider esteja disponível em window.ethereum, você também pode injetá-lo ali passando a opção dangerouslyInjectWindow.

Exemplo
ts
const wallet = createWallet({
  providers: {
    ethereum: {
      dangerouslyInjectWindow: true,
    },
  },
})

window.ethereum.request(/* ... */)

Solana

Por padrão, um provider no estilo Phantom é retornado.

Exemplo
ts
const wallet = createWallet({
  providers: {
    solana: true,
  },
})

const solanaProvider = await wallet.getProvider('solana')

solanaProvider.connect()

Além disso, o provider é anunciado à página web seguindo o Wallet Standard. Se quiser desativar esse comportamento, passe a opção walletStandard.

Exemplo
ts
const wallet = createWallet({
  providers: {
    solana: {
      walletStandard: false,
    },
  },
})

Se seu dApp espera que o provider esteja disponível em window.solana, você também pode injetá-lo ali passando a opção dangerouslyInjectWindow.

Exemplo
ts
const wallet = createWallet({
  providers: {
    solana: {
      dangerouslyInjectWindow: true,
    },
  },
})

window.solana.connect()

Bitcoin

Por padrão, um provider Sats Connect v1 é retornado.

Exemplo
ts
const wallet = createWallet({
  providers: {
    bitcoin: true,
  },
})

const bitcoinProvider = await wallet.getProvider('bitcoin')

bitcoinProvider.connect(/* ... */)

Além disso, o provider é anunciado à página web seguindo o Wallet Standard. Se quiser desativar esse comportamento, passe a opção walletStandard.

Exemplo
ts
const wallet = createWallet({
  providers: {
    bitcoin: {
      walletStandard: false,
    },
  },
})

Universal

O Drop vem com um provider universal que permite usar um único fluxo de conexão para um dApp multi-rede. É recomendado interagir com o provider via Wallet Standard. O provider universal se registra com o nome Drop Universal.

Exemplo
ts
import { createWallet } from '@money-sdk/core'

const wallet = createWallet({
  providers: {
    ethereum: true,
    solana: true,
    universal: true,
  },
})
tsx
import { useWallets, useConnect } from '@wallet-standard/react'
import { useMemo } from 'react'

const wallets = useWallets()
const universalWallet = useMemo(
  () => wallets.find(({ name }) => name === 'Drop Universal'),
  [wallets],
)

const [connecting, connect] = useConnect(universalWallet)

/** Connect Ethereum and Solana at the same time. */
const accounts = connect()

Uma vez que o provider universal esteja conectado, você pode usar os demais providers como de costume.

INFO

O provider universal só conectará outros providers que também estejam habilitados na configuração.

Além disso, o provider fica acessível a partir da instância da carteira.

Exemplo
ts
import { createWallet } from '@money-sdk/core'

const wallet = createWallet({
  providers: {
    bitcoin: true,
    ethereum: true,
    solana: true,
    universal: true,
  },
})

const provider = await wallet.getProvider('universal')

/** Connect Bitcoin, Ethereum and Solana at the same time. */
const accounts = provider.connect()

Valor de retorno

createWallet retorna uma instância Wallet com os seguintes métodos:

getProvider(chain)

Retorna uma promise que resolve para o provider web3 da rede informada ('bitcoin', 'ethereum', 'solana' ou 'universal'). Resolve para null se o provider não foi habilitado na configuração providers.

renderWidget(element)

Anexa o iframe da carteira a um elemento DOM específico para que o usuário veja a UI da carteira. Passe null para desanexar o iframe de volta para o document.body. Os bindings React cuidam disso para você via <WalletWidget>.

setWidgetConfig(config)

Encaminha uma configuração de widget (tema, tamanho, formato, compact) para a carteira embutida. Os bindings React cuidam disso para você via <WalletWidget>.

disconnect()

Encaminha uma mensagem wallet:disconnect para o iframe. Útil se você quiser desconectar o usuário de forma programática sem esperar que ele clique no botão de desconectar dentro do widget.