@openzeppelin/contracts-ui-builder-adapter-midnight
Version:
Midnight Adapter for Contracts UI Builder
72 lines (67 loc) • 2.88 kB
text/typescript
import { NetworkConfig } from '@openzeppelin/contracts-ui-builder-types';
import type { UserExplorerConfig } from '@openzeppelin/contracts-ui-builder-types';
import { logger } from '@openzeppelin/contracts-ui-builder-utils';
/**
* Gets a blockchain explorer URL for an address on Midnight.
* Uses the explorerUrl from the network configuration.
*
* @param address The address to get the explorer URL for
* @param networkConfig The network configuration object.
* @returns A URL to view the address on the configured Midnight explorer, or null.
*/
export function getMidnightExplorerAddressUrl(
address: string,
networkConfig: NetworkConfig
): string | null {
// Placeholder: Implement logic using networkConfig.explorerUrl if available
if (!address || !networkConfig.explorerUrl) {
return null;
}
// Example construction (adjust path as needed for Midnight)
const baseUrl = networkConfig.explorerUrl.replace(/\/+$/, '');
return `${baseUrl}/address/${address}`; // Assuming similar path to others
}
/**
* Gets a blockchain explorer URL for a transaction on Midnight.
* Uses the explorerUrl from the network configuration.
*
* @param txHash - The hash of the transaction to get the explorer URL for
* @param networkConfig The network configuration object.
* @returns A URL to view the transaction on the configured Midnight explorer, or null.
*/
export function getMidnightExplorerTxUrl(
txHash: string,
networkConfig: NetworkConfig
): string | null {
// Placeholder: Implement logic using networkConfig.explorerUrl if available
if (!txHash || !networkConfig.explorerUrl) {
return null;
}
// Example construction (adjust path as needed for Midnight)
const baseUrl = networkConfig.explorerUrl.replace(/\/+$/, '');
return `${baseUrl}/tx/${txHash}`; // Assuming similar path to others
}
/**
* Validates an explorer configuration for Midnight networks.
* @param explorerConfig - The explorer configuration to validate
* @returns True if the configuration is valid, false otherwise
*/
export function validateMidnightExplorerConfig(_explorerConfig: UserExplorerConfig): boolean {
// TODO: Implement Midnight-specific explorer validation when needed
logger.info('validateMidnightExplorerConfig', 'Midnight explorer validation not yet implemented');
return true;
}
/**
* Tests the connection to a Midnight explorer API.
* @param explorerConfig - The explorer configuration to test
* @returns Connection test results including success status, latency, and any errors
*/
export async function testMidnightExplorerConnection(_explorerConfig: UserExplorerConfig): Promise<{
success: boolean;
latency?: number;
error?: string;
}> {
// TODO: Implement explorer connection testing for Midnight
logger.info('testMidnightExplorerConnection', 'TODO: Implement explorer connection testing');
return { success: true };
}