@fairyfromalfeya/locklift-deploy
Version:
Locklift plugin for replicable deployments and easy testing
59 lines (58 loc) • 2.53 kB
TypeScript
import { Locklift, Signer, WalletTypes } from "locklift";
import { FactoryType } from "locklift/internal/factory";
import { Account } from "locklift/everscale-client";
export type CreateAccountParams<T extends FactoryType> = Parameters<Locklift<T>["factory"]["accounts"]["addNewAccount"]>[0];
export type _CreateAccountParamsWithoutPk<E extends FactoryType, T extends CreateAccountParams<E>> = T extends Extract<T, {
type: WalletTypes.EverWallet | WalletTypes.WalletV3 | WalletTypes.HighLoadWalletV2;
}> ? Omit<T, "publicKey"> : T extends Extract<T, {
type: WalletTypes.MsigAccount;
}> ? Omit<T, "publicKey"> : never;
export type DeployContractParams<T extends FactoryType = FactoryType> = Parameters<Locklift<T>["factory"]["deployContract"]>[0];
export type CreateAccountParamsWithoutPk<T extends FactoryType> = _CreateAccountParamsWithoutPk<T, CreateAccountParams<T>>;
export type AddExistingAccountParams = Parameters<Locklift<any>["factory"]["accounts"]["addExistingAccount"]>[0];
export type SaveAccount<T extends AddExistingAccountParams> = T extends Extract<AddExistingAccountParams, {
type: WalletTypes.HighLoadWalletV2 | WalletTypes.WalletV3;
}> ? Omit<T, "publicKey" | "address"> : T extends Extract<AddExistingAccountParams, {
type: WalletTypes.MsigAccount;
}> ? Omit<T, "publicKey" | "address"> : T extends Extract<AddExistingAccountParams, {
type: WalletTypes.EverWallet;
}> ? Omit<T, "address"> : never;
export type LogStruct<T extends FactoryType> = {
accounts: Record<string, CreateAccountParams<any> & {
signerId: string;
address: string;
}>;
contracts: Record<string, {
deployContractParams: DeployContractParams<T>;
address: string;
}>;
};
export type TagFile = {
default: () => Promise<any>;
tag: string;
dependencies?: Array<string>;
};
export type AccountWithSigner = {
account: Account;
signer: Signer;
};
export type WriteDeployInfo = WriteDeployContractInfo | WriteDeployAccountInfo;
export type WriteDeployAccountInfo = {
type: "Account";
deploymentName: string;
address: string;
publicKey?: string;
createAccountParams?: CreateAccountParams<FactoryType>;
saveAccountParams?: SaveAccount<AddExistingAccountParams>;
signerId?: string;
};
export type WriteDeployContractInfo = {
type: "Contract";
deploymentName: string;
contractName: string;
address: string;
abi: any;
codeHash?: string;
transaction?: any;
deployContractParams?: DeployContractParams;
};