UNPKG

@starknet-react/core

Version:

Starknet React is a collection of React hooks for Starknet.

52 lines (45 loc) 1.25 kB
import { useMemo } from "react"; import { type Abi, type CompiledContract, ContractFactory } from "starknet"; import { useAccount } from "./use-account"; /** Arguments for `useContractFactory`. */ export interface UseContractFactoryProps { /** The compiled contract. */ compiledContract?: CompiledContract; /** The class hash */ classHash: string; /** The contract abi. */ abi?: Abi; } /** Value returned from `useContractFactory`. */ export interface UseContractFactoryResult { /** The contract factory. */ contractFactory?: ContractFactory; } /** * Hook to create a `ContractFactory`. * * @remarks * * The returned contract factory is a starknet.js `ContractFactory` object. * * This hook works well with `useDeploy`. */ export function useContractFactory({ compiledContract, classHash, abi, }: UseContractFactoryProps): UseContractFactoryResult { const { account } = useAccount(); const contractFactory = useMemo(() => { if (compiledContract && account && classHash) { return new ContractFactory({ compiledContract, classHash, account, abi, }); } return undefined; }, [compiledContract, classHash, account, abi]); return { contractFactory }; }