Files
2023-02-28 10:08:04 -07:00

37 lines
1.1 KiB
TypeScript

import { AbiEncoder, BigNumber } from '@0x/utils';
const transformERC20Encoder = AbiEncoder.createMethod('transformERC20', [
{ type: 'address', name: 'inputToken' },
{ type: 'address', name: 'outputToken' },
{ type: 'uint256', name: 'inputTokenAmount' },
{ type: 'uint256', name: 'minOutputTokenAmount' },
{
type: 'tuple[]',
name: 'transformations',
components: [
{ type: 'uint32', name: 'deploymentNonce' },
{ type: 'bytes', name: 'data' },
],
},
]);
interface TransformERC20Args {
inputToken: string;
outputToken: string;
inputTokenAmount: BigNumber;
minOutputTokenAmount: BigNumber;
transformations: {
deploymentNonce: BigNumber;
data: string;
}[];
}
/** Returns decoded `TransformERC20.transformERC20` calldata. */
export function decodeTransformERC20(calldata: string): TransformERC20Args {
return transformERC20Encoder.decode(calldata) as TransformERC20Args;
}
export function getTransformerNonces(args: TransformERC20Args): number[] {
return args.transformations.map((t) => t.deploymentNonce.toNumber());
}