0.0.2-beta.1 • Published 17 days ago
@web3-name-sdk/register v0.0.2-beta.1
@web3-name-sdk/register
Installation
Install @web3-name-sdk/register, alongside peer dependency.
npm install @web3-name-sdk/register ethers@5.7.2 viem@1.20
Example
Register a .bnb domain
import SIDRegister from '@web3-name-sdk/register'
import { providers } from 'ethers'
async function registerDomain(label: String) {
// detect provider
if (window.ethereum) {
const provider = new providers.Web3Provider(window.ethereum)
// switch to bsc
await provider.send('wallet_switchEthereumChain', [{ chainId: '0x38' }])
// connect wallet
await provider.send('eth_requestAccounts', [])
// get signer
const signer = provider.getSigner()
// get address
const address = await signer.getAddress()
// init SIDRegister
const register = new SIDRegister({ signer, chainId: 56 })
// check if available
const available = await register.getAvailable(label)
// get price
const price = await register.getRentPrice(label, 1)
// register for one year
await register.register(label, address, 1, {
setPrimaryName: true, // set as primary name, default is false,
referrer: 'test.bnb', // referrer domain, default is null
})
}
}
Register a .arb domain
import SIDRegister from '@web3-name-sdk/register'
import { providers } from 'ethers'
async function registerDomain(label: String) {
// detect provider
if (window.ethereum) {
const provider = new providers.Web3Provider(window.ethereum)
// switch to arbitrum one
await provider.send('wallet_switchEthereumChain', [{ chainId: '0xA4B1' }])
// connect wallet
await provider.send('eth_requestAccounts', [])
// get signer
const signer = provider.getSigner()
// get address
const address = await signer.getAddress()
// init SIDRegister
const register = new SIDRegister({ signer, chainId: 42161 })
// check if available
const available = await register.getAvailable(label)
// get price
const price = await register.getRentPrice(label, 1)
// register for one year
await register.register(label, address, 1, {
setPrimaryName: true, // set as primary name, default is false,
referrer: 'test.bnb', // referrer domain, default is null
})
}
}
Register a .eth domain
import SIDRegister from '@web3-name-sdk/register'
import { providers } from 'ethers'
async function registerEthDomain(label: String) {
// detect provider
if (window.ethereum) {
const provider = new providers.Web3Provider(window.ethereum)
// switch to bsc
await provider.send('wallet_switchEthereumChain', [{ chainId: '0x1' }])
// connect wallet
await provider.send('eth_requestAccounts', [])
// get signer
const signer = provider.getSigner()
// get address
const address = await signer.getAddress()
// init SIDRegister
const register = new SIDRegister({ signer, chainId: 56 })
// check if available
const available = await register.getAvailable(label)
// get price
const price = await register.getRentPrice(label, 1)
// register for one year
await register.register(label, address, 1, {
// wait for commit to be valid
onCommitSuccess: (waitTime) => {
return new Promise((resolve) => {
setTimeout(resolve, waitTime * 1000)
})
},
})
}
}
Register a SPACE ID 3.0 .gno domain
import { SIDRegisterV3, validateNameV3 } from '@web3-name-sdk/register'
import { createPublicClient, createWalletClient, custom, http } from 'viem'
import { gnosisChiado } from 'viem/chains'
const publicClient = createPublicClient({
chain: gnosisChiado,
transport: http(),
})
const walletClient = createWalletClient({
chain: gnosisChiado,
transport: custom(window.ethereum),
})
const address = await walletClient.getAddresses()
// init register instance
const register = new SIDRegisterV3({
publicClient,
walletClient,
identifier: '274997945614032132263423446017095573970170942858695765128406315342190546',
controllerAddr: '0xd7b837a0e388b4c25200983bdaa3ef3a83ca86b7',
resolverAddr: '0x6D3B3F99177FB2A5de7F9E928a9BD807bF7b5BAD',
})
// normalize lael
const normalizedLabel = validateNameV3('test123')
// check if available
const available = await register.getAvailable(normalizedLabel)
// get price
const price = await register.getRentPrice(normalizedLabel, 1)
// register for one year and set as primary name
await register.register(normalizedLabel, address[0], 1, {
setPrimaryName: true
})
SIDRegister Interface
/**
* Get the rent price for a name.
* @param label
* @param year number of registration years
*/
async getRentPrice(label: String, year:Number):Promise<BigNumber>
/**
* check if the domain is available for registration
* @param label
*/
async getAvailable(label: string): Promise<boolean>
/**
* register a domain
* @param label
* @param address the address to register
* @param year
* @param options.referrer optional parameter. the referrer domain. only work for .bnb and .arb domain
* @param options.setPrimaryName optional parameter. register and set the domain as primary name. only work for .bnb and .arb domain
* @param options.onCommitSuccess optional parameter. callback function when the commitment is successful. only required for .eth domain
*/
async register(label: string, address: string, year: number, options?: RegisterOptions):Promise<string>