The Fourt Software Development Kit (SDK) is a TypeScript library that allows you to interact with the Fourt.io services and use them in your projects.
pnpm add @fourt/sdk
npm install @fourt/sdk
yarn add @fourt/sdk
To initialize the SDK, you will need to pass your API key to the one of the Signer constructors. You will also be asked to provide additional options for authentication methods. As of now, the SDK only supports authentication through passkeys (see Web Authentication), and thus only FourtWebSigner
is available.
import { FourtWebSigner } from '@fourt/sdk'
const fourtWebSigner = new FourtWebSigner({
auth: {
webauthn: {
rpId: 'localhost',
},
},
configuration: {
apiKey: '<YOUR_API_KEY>',
},
})
The SDK is divided into several modules, each one with a specific purpose:
-
AuthModule
: A module that allows you to authenticate users with the Fourt.io services; -
UserModule
: A module that allows you to get information about the authenticated user; -
ViemModule
: A module that offers utilities to interact with the Ethereum ecosystem using Viem.
Each module can be accessed through the auth
, user
and viem
properties on the Signer instance, e.g.
await fourtWebSigner.auth.passkeys.signIn({
email,
})
// Will print a `User` object, as defined in `@fourt/sdk/types`.
console.log(fourtWebSigner.user.info)
// Use the Viem module to interact with the Ethereum ecosystem
const localAccount = await fourtWebSigner.viem.toLocalAccount()
// Sign a message with the local account
const signature = await localAccount.signMessage({ message })
console.log(signature)
// Create a smart account instance
import { createPublicClient, http } from 'viem'
import { polygonAmoy } from 'viem/chains'
// You will need to create a public client to interact with the Ethereum ecosystem
const publicClient = createPublicClient({
chain: polygonAmoy,
transport: http('YOUR_RPC_URL'),
})
const smartAccount = await fourtWebSigner.viem.toSmartAccount({
owner: localAccount,
client,
})
// Take some action based on the smart account state
if (smartAccount.isDeployed) {
console.log('Smart account is deployed')
} else {
console.log('Smart account is not deployed. Airdropping tokens...')
}