UNPKG

@kadena/hardhat-chainweb

Version:
122 lines 4.2 kB
import 'hardhat/types'; import type { Origin } from './utils/chainweb'; import type { DeployContractOnChains } from './utils'; import { EthereumProvider, HardhatNetworkAccountsConfig, HardhatNetworkUserConfig, HttpNetworkAccountsConfig, HttpNetworkUserConfig } from 'hardhat/types'; import 'hardhat/types/runtime'; export interface ChainwebInProcessUserConfig { accounts?: HardhatNetworkAccountsConfig; chains: number; graph?: { [key: number]: number[]; }; logging?: 'none' | 'info' | 'debug'; type?: 'in-process'; chainIdOffset?: number; networkOptions?: HardhatNetworkUserConfig; chainwebChainIdOffset?: number; etherscan?: { apiKey: string; apiURLTemplate: string; browserURLTemplate: string; }; } export interface ChainwebInProcessConfig extends Required<Omit<ChainwebInProcessUserConfig, 'networkOptions' | 'etherscan'>> { precompiles: { chainwebChainId: string; spvVerify: string; }; networkOptions?: Omit<HardhatNetworkUserConfig, 'chainId'>; etherscan?: { apiKey: string; apiURLTemplate: string; browserURLTemplate: string; }; } export interface ChainwebExternalUserConfig { accounts?: HttpNetworkAccountsConfig; chains: number; type?: 'external'; externalHostUrl?: string; chainIdOffset?: number; precompiles?: { chainwebChainId?: string; spvVerify?: string; }; chainwebChainIdOffset?: number; networkOptions?: Omit<HttpNetworkUserConfig, 'chainId' | 'url'>; etherscan?: { apiKey: string; apiURLTemplate: string; browserURLTemplate: string; }; } export interface ChainwebExternalConfig extends Required<Omit<ChainwebExternalUserConfig, 'networkOptions' | 'etherscan'>> { precompiles: { chainwebChainId: string; spvVerify: string; }; networkOptions?: Omit<HttpNetworkUserConfig, 'chainId' | 'url'>; etherscan?: { apiKey: string; apiURLTemplate: string; browserURLTemplate: string; }; } export type ChainwebUserConfig = ChainwebInProcessUserConfig | ChainwebExternalUserConfig; export type ChainwebConfig = ChainwebInProcessConfig | ChainwebExternalConfig; export interface ChainwebPluginApi { initialize: (args?: { forking?: { url: string; blockNumber?: number; }; }) => void; getProvider: (cid: number) => Promise<EthereumProvider>; requestSpvProof: (targetChain: number, origin: Omit<Origin, 'originContractAddress'>) => Promise<string>; switchChain: (cid: number) => Promise<void>; getChainIds: () => Promise<number[]>; callChainIdContract: () => Promise<number>; deployContractOnChains: DeployContractOnChains; createTamperedProof: (targetChain: number, origin: Origin) => Promise<string>; computeOriginHash: (origin: Origin) => string; runOverChains: <T>(callback: (chainId: number) => Promise<T>) => Promise<T[]>; } declare module 'hardhat/types' { interface HardhatConfig { chainweb: { hardhat: ChainwebInProcessConfig; localhost: ChainwebExternalConfig; [chainwebName: string]: ChainwebConfig; }; defaultChainweb: string; } interface HardhatUserConfig { chainweb: { hardhat?: ChainwebInProcessUserConfig; localhost?: ChainwebExternalUserConfig; [chainwebName: string]: ChainwebUserConfig | undefined; }; defaultChainweb?: string; } interface HardhatNetworkConfig { chainwebChainId?: number; type?: 'chainweb:in-process'; } interface HttpNetworkConfig { chainwebChainId?: number; type?: 'chainweb:external'; } interface KadenaNetworkConfig extends HardhatNetworkConfig { chainwebChainId: number; } interface KadenaHardhatNetworkUserConfig extends HardhatNetworkUserConfig { chainwebChainId: number; type?: 'chainweb:in-process'; } } declare module 'hardhat/types/runtime' { interface HardhatRuntimeEnvironment { chainweb: ChainwebPluginApi; } } //# sourceMappingURL=type.d.ts.map