import { ethers, Signer } from "ethers"; import SignerOrProvider from "./helpers/SignerOrProvider"; /** * Filters out the optional elements of an array type because an optional * element isn't considered to match First in [infer First, ...]. */ type NonOptionalElementsOf = A extends [ infer First, ...infer Tail ] ? [First, ...NonOptionalElementsOf] : A extends [opt?: unknown] ? [] : never; export type ContractFactoryConstructor = { new (): ethers.ContractFactory; }; export type DeployParams = NonOptionalElementsOf["deploy"]>>; type Deployment = { gasPrice: number; gasLimit: number; signerAddress: string; transaction: string; address: string; }; export default class SafeSingletonFactory { signer: ethers.Signer; chainId: number; address: string; static sharedAddress: string; static deployments: Record; provider: ethers.providers.Provider; viewer: SafeSingletonFactoryViewer; private constructor(); static init(signer: ethers.Signer): Promise; static from(signerOrFactory: ethers.Signer | SafeSingletonFactory): Promise; calculateAddress(ContractFactoryConstructor: CFC, deployParams: DeployParams, salt?: ethers.utils.BytesLike): string; isDeployed(ContractFactoryConstructor: CFC, deployParams: DeployParams, salt?: ethers.utils.BytesLike): Promise; connectIfDeployed(ContractFactoryConstructor: CFC, deployParams: DeployParams, salt?: ethers.utils.BytesLike): Promise["attach"]> | undefined>; connectOrDeploy(ContractFactoryConstructor: CFC, deployParams: DeployParams, salt?: ethers.utils.BytesLike): Promise["attach"]>>; } export declare class SafeSingletonFactoryViewer { signerOrProvider: SignerOrProvider; chainId: number; safeSingletonFactoryAddress: string; signer?: Signer; provider: ethers.providers.Provider; constructor(signerOrProvider: SignerOrProvider, chainId: number); static from(signerOrProvider: SignerOrProvider): Promise; calculateAddress(ContractFactoryConstructor: CFC, deployParams: DeployParams, salt?: ethers.utils.BytesLike): string; isDeployed(ContractFactoryConstructor: CFC, deployParams: DeployParams, salt?: ethers.utils.BytesLike): Promise; connectIfDeployed(ContractFactoryConstructor: CFC, deployParams: DeployParams, salt?: ethers.utils.BytesLike): Promise["attach"]> | undefined>; connectOrThrow(ContractFactoryConstructor: CFC, deployParams: DeployParams, salt?: ethers.utils.BytesLike): Promise["attach"]>>; } export {}; //# sourceMappingURL=SafeSingletonFactory.d.ts.map