import { MetaTransaction } from "@gnosis.pm/safe-contracts"; import { HardhatEthersHelpers } from "@nomiclabs/hardhat-ethers/types"; import { SafeDeploymentAddresses } from "./lib/safe"; import { JsonMetaTransaction } from "./proposal"; export interface SafeCreationSettings { expectedAddress?: string; threshold: number; owners: string[]; nonce?: string; } export interface RealTokenCreationSettings { expectedAddress?: string; salt?: string; } export interface VirtualTokenCreationSettings { merkleRoot: string; usdcToken: string; gnoToken: string; gnoPrice: string; wrappedNativeToken: string; nativeTokenPrice: string; } export interface BridgeParameter { multiTokenMediatorGnosisChain: string; multiTokenMediatorETH: string; arbitraryMessageBridgeETH: string; } export interface DeploymentProposalSettings { gnosisDao: string; cowDao: SafeCreationSettings; teamController: SafeCreationSettings; cowToken: RealTokenCreationSettings; virtualCowToken: VirtualTokenCreationSettings; bridge: BridgeParameter; bridgedTokenDeployer?: string; } export interface DeploymentAddresses extends SafeDeploymentAddresses { forwarder: string; } export interface ReducedVirtualTokenSettings { gnoPrice: string; nativeTokenPrice: string; } export interface ReducedDeploymentProposalSettings extends Omit { virtualCowToken: ReducedVirtualTokenSettings; multisend?: string; } export declare const deterministicallyComputedAddresses: readonly ["cowDao", "teamController", "investorFundsTarget", "cowToken"]; export declare type DeterministicallyComputedAddress = typeof deterministicallyComputedAddresses[number]; export declare type FinalAddresses = Record; export interface DeploymentSteps { cowDaoCreationTransaction: JsonMetaTransaction; teamControllerCreationTransaction: JsonMetaTransaction; investorFundsTargetCreationTransaction: JsonMetaTransaction; cowTokenCreationTransaction: JsonMetaTransaction; virtualCowTokenCreationTransaction: JsonMetaTransaction; approvalOmniBridgeTx: JsonMetaTransaction; relayTestFundsToOmniBridgeTx: JsonMetaTransaction; transferCowTokenToCowDao: JsonMetaTransaction; relayCowDaoDeployment: JsonMetaTransaction; bridgedTokenDeployerTriggering: JsonMetaTransaction; } export interface DeploymentProposalAsStruct { steps: DeploymentSteps; addresses: FinalAddresses; } export interface DeploymentProposal { steps: JsonMetaTransaction[][]; addresses: FinalAddresses; } export declare function getExpectedAddresses(settings: ReducedDeploymentProposalSettings, deploymentAddressesETH: Omit, deploymentAddressesGnosisChain: Omit, ethers: HardhatEthersHelpers): Promise; export declare function generateDeploymentProposal(settings: DeploymentProposalSettings, deploymentAddressesETH: DeploymentAddresses, deploymentAddressesGnosisChain: DeploymentAddresses, ethers: HardhatEthersHelpers): Promise; export declare function generateDeploymentProposalAsStruct(settings: DeploymentProposalSettings, deploymentAddressesETH: DeploymentAddresses, deploymentAddressesGnosisChain: DeploymentAddresses, ethers: HardhatEthersHelpers): Promise; export interface BridgeSettings { arbitraryMessageBridgeETH: string; } export declare function createTxForBridgedSafeSetup(cowDaoAddress: string, bridgeSettings: BridgeSettings, safeSettings: SafeCreationSettings, deploymentAddresses: DeploymentAddresses, ethers: HardhatEthersHelpers): Promise; export declare function createTxTriggeringBridgedTokenDeployer(bridgeSettings: BridgeSettings, bridgedTokenDeployerAddress: string | undefined, ethers: HardhatEthersHelpers): Promise; export declare function deploymentStepsIntoArray(steps: DeploymentSteps): JsonMetaTransaction[][];