Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@azuro-org/sdk-social-aa-connector

Package Overview
Dependencies
Maintainers
0
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@azuro-org/sdk-social-aa-connector

This package adds a Particle Auth Kit with special setup to work with `@azuro-org/sdk`.

  • 1.1.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
0
Created
Source

Social Connector for SDK

This package adds a Particle Auth Kit with special setup to work with @azuro-org/sdk.

Installation

npm install @azuro-org/sdk @azuro-org/sdk-social-aa-connector

it is assumed that you have already set up a project with base azuro sdk.

  1. Replace wagmiConfig creation by createConfig from @privy-io/wagmi:
import { http, createConfig, cookieStorage, createStorage } from 'wagmi'
import { injected, walletConnect } from 'wagmi/connectors'
import type {PrivyClientConfig} from '@privy-io/react-auth'
import { createConfig } from '@privy-io/wagmi'

const wagmiConfig = createConfig({
  chains: appChains,
  transports: {
    [polygonAmoy.id]: http(constants.rpcByChains[polygonAmoy.id]),
  },
  connectors: [
    injectedConnector,
    walletConnectConnector,
  ],
  ssr: true,
  syncConnectedChain: true,
  multiInjectedProviderDiscovery: true,
  storage: createStorage({
    storage: cookieStorage,
  }),
})
  1. Register at https://dashboard.privy.io/account:

    • Create a project, go to "Embedded wallets" page, "Smart Wallets" tab, enable it, choose "Safe" (we support only this), configure paymasters for your app chains (https://dashboard.pimlico.io/apikeys).
    • Go to "Settings" and copy App ID.
  2. Replace WagmiProvider from wagmi by PrivyProvider from @azuro-org/sdk-social-aa-connector:

import type {PrivyClientConfig} from '@privy-io/react-auth'
import { PrivyProvider } from '@azuro-org/sdk-social-aa-connector'
import { wagmiConfig } from './config'

const Providers = ({ children, initialState }) => {
  return (
    <QueryClientProvider client={queryClient}>
      <PrivyProvider
        appId="your-App-ID-from-privy-dashboard"
        // (optional) you can customize privyConfig, see PrivyClientConfig interface
        // privyConfig={privyConfig}
        wagmiConfig={wagmiConfig}
        initialWagmiState={initialState}
      >
        {children}
      </PrivyProvider>
    </QueryClientProvider>
  )
}
  1. Replace connect handlers from wagmi to privy:
import { usePrivy } from '@privy-io/react-auth'
import { useAccount } from '@azuro-org/sdk-social-aa-connector'

const ConnectButton = () => {
  const { address } = useAccount()
  const { connectOrCreateWallet, ready } = usePrivy()
  
  if (!address) {
    return (
      <button type="button" onClick={() => connectOrCreateWallet()}>Connect Wallet</button>
    )
  }

  return <>Your connected state view</>
}
  1. Replace all useAccount hook imports from wagmi to @azuro-org/sdk-social-aa-connector:

It returns the same data, but extends with isAAWallet flag and, in case of login via email/social networks, replaces address with smart account address for current user.

import { useAccount } from '@azuro-org/sdk-social-aa-connector'

const Component = () => {
  /*
   * If user logged in via email/social netkwork:
   *   isAAWallet = true
   *   address = Safe AA address controlled by user
   * Else, default web3 connection:
   *   isAAWallet = false
   *   address = connected wallet address
   * */
  const { address, isAAWallet } = useAccount()
}
  1. Azuro SDK will handle logic required for Azuro. You need to implement logic for on-ramp/off-ramp/withdrawal. To act with user's smart account, use privy walletClient. Read Privy "Using smart wallets" docs
import { useSmartWallets } from '@privy-io/react-auth/smart-wallets'

const Funding = () => {
   const { client } = useSmartWallets()
   
   /*
           
   await client.switchChain({ id: appChainId })

   const signature = await client.signMessage({
      account: client.account,
      message: 'Hello world',
   })

   const signature = await client.signTypedData({
      account: client.account,
      // https://viem.sh/docs/actions/wallet/signTypedData#signtypeddata
      ...insertYourTypedDataParams,
   })

    const txHash = await client.sendTransaction({
      account: client.account,
      chain: appChain,
      to: 'insert-recipient-address',
      value: 0.1,
    });
           
    */
}

FAQs

Package last updated on 14 Jan 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc