diff --git a/.changeset/good-lobsters-lie.md b/.changeset/good-lobsters-lie.md new file mode 100644 index 00000000000..72e3a34dc38 --- /dev/null +++ b/.changeset/good-lobsters-lie.md @@ -0,0 +1,7 @@ +--- +"@fuel-ts/abi-typegen": minor +"@fuel-ts/abi-coder": minor +"@fuel-ts/program": patch +--- + +feat!: remove redundant exports from `v1` encoding diff --git a/packages/abi-coder/src/Interface.ts b/packages/abi-coder/src/Interface.ts index d2922bf5f47..c2f9404bb69 100644 --- a/packages/abi-coder/src/Interface.ts +++ b/packages/abi-coder/src/Interface.ts @@ -49,23 +49,6 @@ export class Interface<TAbi extends JsonAbi = JsonAbi> { ); } - decodeFunctionData(functionFragment: FunctionFragment | string, data: BytesLike): any { - const fragment = - typeof functionFragment === 'string' ? this.getFunction(functionFragment) : functionFragment; - - return fragment.decodeArguments(data); - } - - encodeFunctionData( - functionFragment: FunctionFragment | string, - values: Array<InputValue> - ): Uint8Array { - const fragment = - typeof functionFragment === 'string' ? this.getFunction(functionFragment) : functionFragment; - - return fragment.encodeArguments(values); - } - // Decode the result of a function call decodeFunctionResult(functionFragment: FunctionFragment | string, data: BytesLike): any { const fragment = diff --git a/packages/abi-coder/src/index.ts b/packages/abi-coder/src/index.ts index 2c51b357a97..741fcd60b19 100644 --- a/packages/abi-coder/src/index.ts +++ b/packages/abi-coder/src/index.ts @@ -12,7 +12,6 @@ export { UTXO_ID_LEN, BYTES_32, calculateVmTxMemory, - type EncodingVersion, ENCODING_V1, } from './utils/constants'; export { AbiCoder } from './AbiCoder'; diff --git a/packages/abi-coder/test/Interface.test.ts b/packages/abi-coder/test/Interface.test.ts index d93c26ca5f9..3d27d49a9f8 100644 --- a/packages/abi-coder/test/Interface.test.ts +++ b/packages/abi-coder/test/Interface.test.ts @@ -102,24 +102,6 @@ describe('Abi interface', () => { it('raises an error when function is not found', () => { const fnName = 'doesnt_exist'; expect(() => exhaustiveExamplesInterface.getFunction(fnName)).toThrow(); - - expect(() => exhaustiveExamplesInterface.encodeFunctionData(fnName, [123])).toThrow(); - - expect(() => - exhaustiveExamplesInterface.decodeFunctionData(fnName, new Uint8Array()) - ).toThrow(); - }); - - it('raises an error if the arguments do not match the function input types', () => { - const values = [11, 11]; - - const errMsg = `Mismatch between provided arguments and expected ABI inputs.` - .concat(` Provided ${values.length} arguments,`) - .concat(` but expected 1 (excluding 0 optional inputs).`); - - expect(() => exhaustiveExamplesInterface.encodeFunctionData('entry_one', values)).toThrow( - errMsg - ); }); }); diff --git a/packages/abi-typegen/src/templates/contract/dts.hbs b/packages/abi-typegen/src/templates/contract/dts.hbs index 6e1e5bf4e89..c9000f005a3 100644 --- a/packages/abi-typegen/src/templates/contract/dts.hbs +++ b/packages/abi-typegen/src/templates/contract/dts.hbs @@ -54,14 +54,6 @@ interface {{capitalizedName}}Interface extends Interface { {{this}}: FunctionFragment; {{/each}} }; - - {{#each encoders}} - encodeFunctionData(functionFragment: '{{functionName}}', values: [{{input}}]): Uint8Array; - {{/each}} - - {{#each decoders}} - decodeFunctionData(functionFragment: '{{functionName}}', data: BytesLike): DecodedValue; - {{/each}} } diff --git a/packages/abi-typegen/test/fixtures/templates/contract-with-configurable/dts.hbs b/packages/abi-typegen/test/fixtures/templates/contract-with-configurable/dts.hbs index 23410fcf29e..158fd1a888e 100644 --- a/packages/abi-typegen/test/fixtures/templates/contract-with-configurable/dts.hbs +++ b/packages/abi-typegen/test/fixtures/templates/contract-with-configurable/dts.hbs @@ -26,10 +26,6 @@ interface MyContractAbiInterface extends Interface { functions: { main: FunctionFragment; }; - - encodeFunctionData(functionFragment: 'main', values: [string, string]): Uint8Array; - - decodeFunctionData(functionFragment: 'main', data: BytesLike): DecodedValue; } export class MyContractAbi extends Contract { diff --git a/packages/abi-typegen/test/fixtures/templates/contract/dts.hbs b/packages/abi-typegen/test/fixtures/templates/contract/dts.hbs index 1fa4d62b5e5..384c6e7d18b 100644 --- a/packages/abi-typegen/test/fixtures/templates/contract/dts.hbs +++ b/packages/abi-typegen/test/fixtures/templates/contract/dts.hbs @@ -91,80 +91,6 @@ interface MyContractAbiInterface extends Interface { types_vector_option: FunctionFragment; types_vector_u8: FunctionFragment; }; - - encodeFunctionData(functionFragment: 'type_address', values: [AddressInput]): Uint8Array; - encodeFunctionData(functionFragment: 'type_contract_id', values: [ContractIdInput]): Uint8Array; - encodeFunctionData(functionFragment: 'type_external_enum', values: [ExternalEnumInput]): Uint8Array; - encodeFunctionData(functionFragment: 'type_external_struct', values: [ExternalStructInput]): Uint8Array; - encodeFunctionData(functionFragment: 'type_identity', values: [IdentityInput]): Uint8Array; - encodeFunctionData(functionFragment: 'types_array', values: [[BigNumberish, BigNumberish, BigNumberish]]): Uint8Array; - encodeFunctionData(functionFragment: 'types_asset_id', values: [AssetIdInput]): Uint8Array; - encodeFunctionData(functionFragment: 'types_b256', values: [string]): Uint8Array; - encodeFunctionData(functionFragment: 'types_b512', values: [string]): Uint8Array; - encodeFunctionData(functionFragment: 'types_bool', values: [boolean]): Uint8Array; - encodeFunctionData(functionFragment: 'types_bytes', values: [Bytes]): Uint8Array; - encodeFunctionData(functionFragment: 'types_empty', values: []): Uint8Array; - encodeFunctionData(functionFragment: 'types_empty_then_value', values: [BigNumberish]): Uint8Array; - encodeFunctionData(functionFragment: 'types_enum', values: [MyEnumInput]): Uint8Array; - encodeFunctionData(functionFragment: 'types_enum_with_vector', values: [EnumWithVectorInput]): Uint8Array; - encodeFunctionData(functionFragment: 'types_evm_address', values: [EvmAddress]): Uint8Array; - encodeFunctionData(functionFragment: 'types_generic_enum', values: [GenericEnumInput<BigNumberish, BigNumberish>]): Uint8Array; - encodeFunctionData(functionFragment: 'types_generic_struct', values: [GenericStructWithEnumInput<BigNumberish, BigNumberish>]): Uint8Array; - encodeFunctionData(functionFragment: 'types_option', values: [Option<BigNumberish>]): Uint8Array; - encodeFunctionData(functionFragment: 'types_option_geo', values: [Option<MyStructInput>]): Uint8Array; - encodeFunctionData(functionFragment: 'types_raw_slice', values: [RawSlice]): Uint8Array; - encodeFunctionData(functionFragment: 'types_result', values: [Result<BigNumberish, BigNumberish>]): Uint8Array; - encodeFunctionData(functionFragment: 'types_std_string', values: [StdString]): Uint8Array; - encodeFunctionData(functionFragment: 'types_str', values: [string]): Uint8Array; - encodeFunctionData(functionFragment: 'types_struct', values: [MyStructInput]): Uint8Array; - encodeFunctionData(functionFragment: 'types_tuple', values: [[BigNumberish, BigNumberish, BigNumberish]]): Uint8Array; - encodeFunctionData(functionFragment: 'types_u16', values: [BigNumberish]): Uint8Array; - encodeFunctionData(functionFragment: 'types_u256', values: [BigNumberish]): Uint8Array; - encodeFunctionData(functionFragment: 'types_u32', values: [BigNumberish]): Uint8Array; - encodeFunctionData(functionFragment: 'types_u64', values: [BigNumberish]): Uint8Array; - encodeFunctionData(functionFragment: 'types_u8', values: [BigNumberish]): Uint8Array; - encodeFunctionData(functionFragment: 'types_value_then_empty', values: [BigNumberish]): Uint8Array; - encodeFunctionData(functionFragment: 'types_value_then_empty_then_value', values: [BigNumberish, BigNumberish]): Uint8Array; - encodeFunctionData(functionFragment: 'types_vector_geo', values: [Vec<MyStructInput>]): Uint8Array; - encodeFunctionData(functionFragment: 'types_vector_option', values: [Vec<StructWithMultiOptionInput>]): Uint8Array; - encodeFunctionData(functionFragment: 'types_vector_u8', values: [Vec<BigNumberish>]): Uint8Array; - - decodeFunctionData(functionFragment: 'type_address', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'type_contract_id', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'type_external_enum', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'type_external_struct', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'type_identity', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_array', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_asset_id', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_b256', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_b512', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_bool', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_bytes', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_empty', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_empty_then_value', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_enum', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_enum_with_vector', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_evm_address', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_generic_enum', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_generic_struct', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_option', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_option_geo', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_raw_slice', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_result', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_std_string', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_str', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_struct', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_tuple', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_u16', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_u256', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_u32', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_u64', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_u8', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_value_then_empty', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_value_then_empty_then_value', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_vector_geo', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_vector_option', data: BytesLike): DecodedValue; - decodeFunctionData(functionFragment: 'types_vector_u8', data: BytesLike): DecodedValue; } export class MyContractAbi extends Contract { diff --git a/packages/program/src/functions/base-invocation-scope.ts b/packages/program/src/functions/base-invocation-scope.ts index e86f3c07fbc..5e44a223db5 100644 --- a/packages/program/src/functions/base-invocation-scope.ts +++ b/packages/program/src/functions/base-invocation-scope.ts @@ -31,9 +31,7 @@ function createContractCall(funcScope: InvocationScopeLike): ContractCall { return { contractId: (program as AbstractContract).id, - fnSelector: func.selector, fnSelectorBytes: func.selectorBytes, - encoding: func.encoding, data, assetId: forward?.assetId, amount: forward?.amount, diff --git a/packages/program/src/types.ts b/packages/program/src/types.ts index 7a7eff538c4..501395c4e21 100644 --- a/packages/program/src/types.ts +++ b/packages/program/src/types.ts @@ -1,4 +1,4 @@ -import type { FunctionFragment, JsonAbi, EncodingVersion } from '@fuel-ts/abi-coder'; +import type { FunctionFragment, JsonAbi } from '@fuel-ts/abi-coder'; import type { CoinQuantity, CoinQuantityLike } from '@fuel-ts/account'; import type { AbstractProgram, AbstractAddress, BytesLike } from '@fuel-ts/interfaces'; import type { BigNumberish } from '@fuel-ts/math'; @@ -11,9 +11,7 @@ import type { FunctionInvocationScope } from './functions/invocation-scope'; export type ContractCall = { contractId: AbstractAddress; data: BytesLike; - fnSelector: string; fnSelectorBytes: Uint8Array; - encoding?: EncodingVersion; amount?: BigNumberish; assetId?: BytesLike; gas?: BigNumberish;