index.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { CONFIG_TYPE, NetworkConfig } from "./config";
  2. import { TerraDeployer } from "./terra";
  3. import { InjectiveDeployer } from "./injective";
  4. import { OsmosisDeployer } from "./osmosis";
  5. import { SeiDeployer } from "./sei";
  6. export type ContractInfo = {
  7. codeId: number;
  8. address: string;
  9. creator: string;
  10. admin: string | undefined;
  11. initMsg: any;
  12. };
  13. export interface Deployer {
  14. deployArtifact(artifact: string): Promise<number>;
  15. instantiate(
  16. codeId: number,
  17. inst_msg: string | object,
  18. label: string
  19. ): Promise<string>;
  20. migrate(contract: string, codeId: number): Promise<void>;
  21. updateAdmin(newAdmin: string, contract: string): Promise<void>;
  22. getContractInfo(contract: string): Promise<ContractInfo>;
  23. }
  24. export class DeployerFactory {
  25. static create(config: NetworkConfig, mnemonic: string): Deployer {
  26. switch (config.type) {
  27. case CONFIG_TYPE.TERRA:
  28. return TerraDeployer.fromHostAndMnemonic(config.host, mnemonic);
  29. case CONFIG_TYPE.INJECTIVE:
  30. return InjectiveDeployer.fromHostAndMnemonic(config.host, mnemonic);
  31. case CONFIG_TYPE.OSMOSIS:
  32. return OsmosisDeployer.fromHostAndMnemonic(config.host, mnemonic);
  33. case CONFIG_TYPE.SEI:
  34. return SeiDeployer.fromHostAndMnemonic(config.host, mnemonic);
  35. default:
  36. throw new Error("Invalid config type");
  37. }
  38. }
  39. }