import { ethers } from 'ethers'; /** * Creates a safe and podifies it. * If a signer is not provided, instead it returns an unsigned transaction. * @param args.members - Array of pod member addresses * @param args.threshold - Voting threshold * @param args.admin - Optional pod admin * @param args.name - ENS label for safe, i.e., 'orca-core'. Do not add the pod.eth/pod.xyz suffix * @param signer - Optional signer */ export declare function createPod(args: { members: Array; threshold: number; admin?: string; name: string; }, signer?: ethers.Signer): Promise; /** * Returns the deployment of a controller from a safe's modules, if it exists, otherwise returns null. * @param safeOrModules - safe address or list of modules * @returns bool */ export declare function getControllerFromModules(safeOrModules: string | string[]): Promise; /** * Creates a SafeTx on a safe to enable the latest Controller as a module. * * @param safe - Safe address * @param signer * @throws If a Controller module is already enabled. If you are attempting to upgrade versions, use `Pod.migratePodToLatest`. */ export declare function enableController(safe: string, signer: ethers.Signer): Promise; /** * Adds a Gnosis Safe to the pod ecosystem. * If a signer is not provided, it instead returns the unsigned transaction. * @param args.admin - Optional address of admin * @param args.name - ENS label for safe, i.e., 'orca-core'. Do not add the pod.eth/pod.xyz suffix * @param args.safe - Safe address * @param signer - Signer of a safe owner. * @throws - If Controller module was not enabled * @throws - If signer is not a safe owner * @returns */ export declare function podifySafe(args: { admin?: string; name: string; safe: string; }, signer?: ethers.Signer): Promise; /** * Creates multiple pods simultaneously. * * Each pod requires an array of members, a threshold and label, with an optional admin. * Members or admins can be other pods in this create action. * * Pods can be added as members of other pods using labels, * but only with pods earlier up in the array. * I.e., the second pod in the array can have the first pod in the array as a member or admin, * but the first pod cannot have the second pod as a member. * * The label replacement does not (currently) work with already existing pods. * * An example: * ``` * [ * { * label: 'orcanauts', * // This will add the below pods as sub pods to this newly created one. * members: ['art-nauts', 'gov-nauts'], * threshold: 1, * }, * { * label: 'art-nauts', * members: ['0x1234...', '0x2345...'], * threshold: 1, * }, * { * label: 'gov-nauts', * members: ['0x3456...', '0x4567...'], * threshold: 1, * // This will add the above 'orcanauts' pod as the admin to this new pod. * admin: 'orcanauts', * } * ] * ``` * @param pods */ export declare function multiPodCreate(pods: Array<{ members: string[]; threshold: number; admin?: string; label: string; }>, signer: ethers.Signer): Promise;