@roochnetwork/rooch-sdk-kit
Version:
Rooch SDK Kit
46 lines (34 loc) • 1.11 kB
text/typescript
// Copyright (c) RoochNetwork
// SPDX-License-Identifier: Apache-2.0
import type { RoochClientOptions } from '@roochnetwork/rooch-sdk'
import { useRoochContext } from './useRoochContext.js'
export type NetworkConfig<T extends object = object> = RoochClientOptions & {
variables?: T
}
export function createNetworkConfig<
const T extends Record<string, Config>,
Config extends NetworkConfig<Variables> = T[keyof T],
Variables extends object = NonNullable<Config['variables']>,
>(networkConfig: T) {
function useNetworkConfig(): Config {
const { config } = useRoochContext()
if (!config) {
throw new Error('No network config found')
}
return config as T[keyof T]
}
function useNetworkVariables(): Variables {
const { variables } = useNetworkConfig()
return (variables ?? {}) as Variables
}
function useNetworkVariable<K extends keyof Variables>(name: K): Variables[K] {
const variables = useNetworkVariables()
return variables[name]
}
return {
networkConfig,
useNetworkConfig,
useNetworkVariables,
useNetworkVariable,
}
}