51 lines
1.4 KiB
TypeScript
51 lines
1.4 KiB
TypeScript
import { Registry, DENOM as ALNT_DENOM } from '@cerc-io/registry-sdk';
|
|
import { GasPrice } from '@cosmjs/stargate';
|
|
|
|
import { RegistryConfig } from '../types';
|
|
|
|
let registryInstance: Registry | null = null;
|
|
|
|
export const getRegistry = (): Registry => {
|
|
if (!registryInstance) {
|
|
const config = getRegistryConfig();
|
|
const gasPrice = GasPrice.fromString(config.fee.gasPrice + ALNT_DENOM);
|
|
|
|
registryInstance = new Registry(
|
|
config.gqlEndpoint,
|
|
config.rpcEndpoint,
|
|
{ chainId: config.chainId, gasPrice }
|
|
);
|
|
}
|
|
return registryInstance;
|
|
};
|
|
|
|
export const getRegistryConfig = (): RegistryConfig => {
|
|
// Validate required environment variables
|
|
const requiredEnvVars = [
|
|
'NEXT_PUBLIC_REGISTRY_CHAIN_ID',
|
|
'NEXT_PUBLIC_REGISTRY_GQL_ENDPOINT',
|
|
'NEXT_PUBLIC_REGISTRY_RPC_ENDPOINT',
|
|
'REGISTRY_BOND_ID',
|
|
'REGISTRY_AUTHORITY',
|
|
'REGISTRY_USER_KEY'
|
|
];
|
|
|
|
for (const envVar of requiredEnvVars) {
|
|
if (!process.env[envVar]) {
|
|
throw new Error(`Missing environment variable: ${envVar}`);
|
|
}
|
|
}
|
|
|
|
return {
|
|
chainId: process.env.NEXT_PUBLIC_REGISTRY_CHAIN_ID!,
|
|
rpcEndpoint: process.env.NEXT_PUBLIC_REGISTRY_RPC_ENDPOINT!,
|
|
gqlEndpoint: process.env.NEXT_PUBLIC_REGISTRY_GQL_ENDPOINT!,
|
|
bondId: process.env.REGISTRY_BOND_ID!,
|
|
authority: process.env.REGISTRY_AUTHORITY!,
|
|
privateKey: process.env.REGISTRY_USER_KEY!,
|
|
fee: {
|
|
gasPrice: process.env.REGISTRY_GAS_PRICE || '0.001',
|
|
},
|
|
};
|
|
};
|