Add `bytecode` to factory outputted by `typegen`
We are currently outputting the bytecode of a contract in a separate file, which forces people to do two imports:
import { CallTestContractAbi__factory } from '../test/typegen/contracts';
import bytecode from '../test/typegen/contracts/CallTestContractAbi.hex';
By putting the bytecode on the factory and integrating it with the factory properly, this can be reduced to only one import:
import { CallTestContractAbi__factory } from '../test/typegen/contracts';
[!TIP] To maintain backwards compatibility and not make this a breaking change, we can continue exporting the file separately.
Wouldn't this include the bytecode in the final bundle regardless of being in use?
Wouldn't this include the bytecode in the final bundle regardless of being in use?
If the factory is not in use then I believe it'll be treeshaken.
I think it must be at least in a separate file:
import { Counter, deployCounter } from './typegend';
Pseudo code:
import { Account, DeployContractOptions, DeployContractResult, ContractFactory } from 'fuels';
import { Counter, abi, storageSlots } from './Counter'
export const counterBytecode = '0x1af03..';
export async function deployCounter(
wallet: Account,
options: DeployContractOptions = {}
): Promise<DeployContractResult<Counter>> {
const factory = new ContractFactory(counterBytecode, abi, wallet);
return factory.deployContract<Counter>({
storageSlots,
...options,
});
}