This is how I am doing it in Typescript.
import { Contract } from 'web3-eth-contract';
import { SafeAccountConfig } from '@gnosis.pm/safe-core-sdk';
const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
const getInitilizer = (
safeProxyContract: Contract,
methodName: string,
{
owners,
threshold,
to = ZERO_ADDRESS,
data = '0x',
fallbackHandler = ZERO_ADDRESS,
paymentToken = ZERO_ADDRESS,
payment = 0,
paymentReceiver = ZERO_ADDRESS,
}: SafeAccountConfig
) => {
return safeProxyContract.methods[methodName](
owners,
threshold,
to,
data,
fallbackHandler,
paymentToken,
payment,
paymentReceiver
).encodeABI();
};
Usage:
getInitilizer(<SafeProxyContractInstance>, 'setup', <SafeAccountConfig>);