import type { RMRKUtilityContracts } from '@rmrk-team/rmrk-evm-utils'; import * as React from 'react'; import { useContext } from 'react'; type RMRKConfigInitial = { utilityContracts: RMRKUtilityContracts; ipfsGateway?: string; }; export type RMRKConfig< utilityContracts extends RMRKUtilityContracts = RMRKUtilityContracts, > = { utilityContracts: utilityContracts; ipfsGateway?: string; }; export type ResolveRMRKConfig = { config: RMRKConfigInitial extends { config: infer config extends RMRKConfig; } ? config : RMRKConfig; }; export type ConfigParameter = { config?: RMRKConfig | config | undefined; }; export const RMRKContext = React.createContext( undefined, ); export type UseConfigReturnType = config; export type UseConfigParameters = ConfigParameter; export function useRMRKConfig< config extends RMRKConfig = ResolveRMRKConfig['config'], >(): UseConfigReturnType { const config = useContext(RMRKContext); if (!config) throw new Error('No config found'); return config as UseConfigReturnType; }