packages/codec-components/src/react/contexts/custom-components.ts
import { createContext, useContext } from "react";
import type Codec from "@truffle/codec";
import type { AbiArgumentsProps } from "../components/common/abi-arguments";
import type { CodeProps } from "../components/common/code";
import type { CodecErrorProps } from "../components/common/codec-error";
import type { ContainerProps } from "../components/common/container";
export type CustomComponent<P> = (props: P) => JSX.Element;
export type CustomCodecComponent<D> = CustomComponent<{ data: D }>;
type CustomCodecComponents<T> = {
[componentName in keyof T]: CustomCodecComponent<T[componentName]>;
};
type CustomCommonComponents<T> = {
[componentName in keyof T]: CustomComponent<T[componentName]>;
};
export interface CustomComponentsContextValue {
codec?: Partial<
CustomCodecComponents<{
AbiArgument: Codec.AbiArgument;
AccessListForAddress: Codec.AccessListForAddress;
AccessList: Codec.AccessList;
AnonymousDecoding: Codec.AnonymousDecoding;
BytecodeDecoding: Codec.BytecodeDecoding;
CalldataDecoding: Codec.CalldataDecoding;
ConstructorDecoding: Codec.ConstructorDecoding;
EmptyFailureDecoding: Codec.EmptyFailureDecoding;
EventDecoding: Codec.EventDecoding;
AbiErrorResult: Codec.Format.Errors.AbiErrorResult;
AddressErrorResult: Codec.Format.Errors.AddressErrorResult;
AddressError: Codec.Format.Errors.AddressError;
AddressPaddingError: Codec.Format.Errors.AddressPaddingError;
ArrayErrorResult: Codec.Format.Errors.ArrayErrorResult;
ArrayError: Codec.Format.Errors.ArrayError;
BoolErrorResult: Codec.Format.Errors.BoolErrorResult;
BoolError: Codec.Format.Errors.BoolError;
BoolOutOfRangeError: Codec.Format.Errors.BoolOutOfRangeError;
BoolPaddingError: Codec.Format.Errors.BoolPaddingError;
BuiltInValueErrorResult: Codec.Format.Errors.BuiltInValueErrorResult;
BytesDynamicErrorResult: Codec.Format.Errors.BytesDynamicErrorResult;
BytesDynamicError: Codec.Format.Errors.BytesDynamicError;
BytesErrorResult: Codec.Format.Errors.BytesErrorResult;
BytesLocation: Codec.Format.Errors.BytesLocation;
BytesPaddingError: Codec.Format.Errors.BytesPaddingError;
BytesStaticErrorResult: Codec.Format.Errors.BytesStaticErrorResult;
BytesStaticError: Codec.Format.Errors.BytesStaticError;
CodeNotSuppliedError: Codec.Format.Errors.CodeNotSuppliedError;
ContractErrorResult: Codec.Format.Errors.ContractErrorResult;
ContractError: Codec.Format.Errors.ContractError;
ContractPaddingError: Codec.Format.Errors.ContractPaddingError;
DecoderError: Codec.Format.Errors.DecoderError;
DeployedFunctionInConstructorError: Codec.Format.Errors.DeployedFunctionInConstructorError;
DynamicDataImplementationError: Codec.Format.Errors.DynamicDataImplementationError;
ElementaryErrorResult: Codec.Format.Errors.ElementaryErrorResult;
EnumErrorResult: Codec.Format.Errors.EnumErrorResult;
EnumError: Codec.Format.Errors.EnumError;
EnumNotFoundDecodingError: Codec.Format.Errors.EnumNotFoundDecodingError;
EnumOutOfRangeError: Codec.Format.Errors.EnumOutOfRangeError;
EnumPaddingError: Codec.Format.Errors.EnumPaddingError;
ErrorForThrowing: Codec.Format.Errors.ErrorForThrowing;
ErrorResult: Codec.Format.Errors.ErrorResult;
FixedErrorResult: Codec.Format.Errors.FixedErrorResult;
FixedError: Codec.Format.Errors.FixedError;
FixedPaddingError: Codec.Format.Errors.FixedPaddingError;
FunctionExternalErrorResult: Codec.Format.Errors.FunctionExternalErrorResult;
FunctionExternalError: Codec.Format.Errors.FunctionExternalError;
FunctionExternalNonStackPaddingError: Codec.Format.Errors.FunctionExternalNonStackPaddingError;
FunctionExternalStackPaddingError: Codec.Format.Errors.FunctionExternalStackPaddingError;
FunctionInternalErrorResult: Codec.Format.Errors.FunctionInternalErrorResult;
FunctionInternalError: Codec.Format.Errors.FunctionInternalError;
FunctionInternalPaddingError: Codec.Format.Errors.FunctionInternalPaddingError;
GenericError: Codec.Format.Errors.GenericError;
IndexedReferenceTypeError: Codec.Format.Errors.IndexedReferenceTypeError;
IntErrorResult: Codec.Format.Errors.IntErrorResult;
IntError: Codec.Format.Errors.IntError;
IntPaddingError: Codec.Format.Errors.IntPaddingError;
InternalFunctionInABIError: Codec.Format.Errors.InternalFunctionInABIError;
InternalUseError: Codec.Format.Errors.InternalUseError;
MappingErrorResult: Codec.Format.Errors.MappingErrorResult;
MagicError: Codec.Format.Errors.MagicError;
MalformedInternalFunctionError: Codec.Format.Errors.MalformedInternalFunctionError;
MagicErrorResult: Codec.Format.Errors.MagicErrorResult;
MappingError: Codec.Format.Errors.MappingError;
NoSuchInternalFunctionError: Codec.Format.Errors.NoSuchInternalFunctionError;
OptionsErrorResult: Codec.Format.Errors.OptionsErrorResult;
OptionsError: Codec.Format.Errors.OptionsError;
OverlargePointersNotImplementedError: Codec.Format.Errors.OverlargePointersNotImplementedError;
OverlongArrayOrStringStrictModeError: Codec.Format.Errors.OverlongArrayOrStringStrictModeError;
OverlongArraysAndStringsNotImplementedError: Codec.Format.Errors.OverlongArraysAndStringsNotImplementedError;
ReEncodingMismatchError: Codec.Format.Errors.ReEncodingMismatchError;
ReadErrorBytes: Codec.Format.Errors.ReadErrorBytes;
ReadErrorStack: Codec.Format.Errors.ReadErrorStack;
ReadErrorStorage: Codec.Format.Errors.ReadErrorStorage;
ReadError: Codec.Format.Errors.ReadError;
StorageNotSuppliedError: Codec.Format.Errors.StorageNotSuppliedError;
StringErrorResult: Codec.Format.Errors.StringErrorResult;
StringError: Codec.Format.Errors.StringError;
StructErrorResult: Codec.Format.Errors.StructErrorResult;
StructError: Codec.Format.Errors.StructError;
TupleErrorResult: Codec.Format.Errors.TupleErrorResult;
TupleError: Codec.Format.Errors.TupleError;
TypeErrorResult: Codec.Format.Errors.TypeErrorResult;
TypeErrorUnion: Codec.Format.Errors.TypeErrorUnion;
UfixedErrorResult: Codec.Format.Errors.UfixedErrorResult;
UfixedError: Codec.Format.Errors.UfixedError;
UfixedPaddingError: Codec.Format.Errors.UfixedPaddingError;
UintErrorResult: Codec.Format.Errors.UintErrorResult;
UintError: Codec.Format.Errors.UintError;
UintPaddingError: Codec.Format.Errors.UintPaddingError;
UnsupportedConstantError: Codec.Format.Errors.UnsupportedConstantError;
UnusedImmutableError: Codec.Format.Errors.UnusedImmutableError;
UserDefinedTypeNotFoundError: Codec.Format.Errors.UserDefinedTypeNotFoundError;
UserDefinedValueTypeErrorResult: Codec.Format.Errors.UserDefinedValueTypeErrorResult;
UserDefinedValueTypeError: Codec.Format.Errors.UserDefinedValueTypeError;
WrappedError: Codec.Format.Errors.WrappedError;
Range: Codec.Storage.Range;
Slot: Codec.Storage.Slot;
StoragePosition: Codec.Storage.StoragePosition;
AbiResult: Codec.Format.Values.AbiResult;
AbiValue: Codec.Format.Values.AbiValue;
AddressResult: Codec.Format.Values.AddressResult;
AddressValue: Codec.Format.Values.AddressValue;
ArrayResult: Codec.Format.Values.ArrayResult;
ArrayValue: Codec.Format.Values.ArrayValue;
BoolResult: Codec.Format.Values.BoolResult;
BoolValue: Codec.Format.Values.BoolValue;
BuiltInValueValue: Codec.Format.Values.BuiltInValueValue;
BytesDynamicResult: Codec.Format.Values.BytesDynamicResult;
BytesDynamicValue: Codec.Format.Values.BytesDynamicValue;
BytesResult: Codec.Format.Values.BytesResult;
BytesStaticResult: Codec.Format.Values.BytesStaticResult;
BytesStaticValue: Codec.Format.Values.BytesStaticValue;
BytesValue: Codec.Format.Values.BytesValue;
ContractResult: Codec.Format.Values.ContractResult;
ContractValueInfoKnown: Codec.Format.Values.ContractValueInfoKnown;
ContractValueInfoUnknown: Codec.Format.Values.ContractValueInfoUnknown;
ContractValueInfo: Codec.Format.Values.ContractValueInfo;
ContractValue: Codec.Format.Values.ContractValue;
ElementaryResult: Codec.Format.Values.ElementaryResult;
ElementaryValue: Codec.Format.Values.ElementaryValue;
EnumResult: Codec.Format.Values.EnumResult;
EnumValue: Codec.Format.Values.EnumValue;
FixedResult: Codec.Format.Values.FixedResult;
FixedValue: Codec.Format.Values.FixedValue;
FunctionExternalResult: Codec.Format.Values.FunctionExternalResult;
FunctionExternalValueInfoInvalid: Codec.Format.Values.FunctionExternalValueInfoInvalid;
FunctionExternalValueInfoKnown: Codec.Format.Values.FunctionExternalValueInfoKnown;
FunctionExternalValueInfoUnknown: Codec.Format.Values.FunctionExternalValueInfoUnknown;
FunctionExternalValueInfo: Codec.Format.Values.FunctionExternalValueInfo;
FunctionExternalValue: Codec.Format.Values.FunctionExternalValue;
FunctionInternalRawInfo: Codec.Format.Values.FunctionInternalRawInfo;
FunctionInternalRawInfoPcPair: Codec.Format.Values.FunctionInternalRawInfoPcPair;
FunctionInternalRawInfoIndex: Codec.Format.Values.FunctionInternalRawInfoIndex;
FunctionInternalResult: Codec.Format.Values.FunctionInternalResult;
FunctionInternalValueInfoException: Codec.Format.Values.FunctionInternalValueInfoException;
FunctionInternalValueInfoKnown: Codec.Format.Values.FunctionInternalValueInfoKnown;
FunctionInternalValueInfoUnknown: Codec.Format.Values.FunctionInternalValueInfoUnknown;
FunctionInternalValueInfo: Codec.Format.Values.FunctionInternalValueInfo;
FunctionInternalValue: Codec.Format.Values.FunctionInternalValue;
IntResult: Codec.Format.Values.IntResult;
IntValue: Codec.Format.Values.IntValue;
KeyValuePair: Codec.Format.Values.KeyValuePair;
MagicResult: Codec.Format.Values.MagicResult;
MagicValue: Codec.Format.Values.MagicValue;
MappingResult: Codec.Format.Values.MappingResult;
MappingValue: Codec.Format.Values.MappingValue;
NameValuePair: Codec.Format.Values.NameValuePair;
OptionallyNamedValue: Codec.Format.Values.OptionallyNamedValue;
OptionsResult: Codec.Format.Values.OptionsResult;
OptionsValue: Codec.Format.Values.OptionsValue;
Result: Codec.Format.Values.Result;
StringResult: Codec.Format.Values.StringResult;
StringValueInfoMalformed: Codec.Format.Values.StringValueInfoMalformed;
StringValueInfoValid: Codec.Format.Values.StringValueInfoValid;
StringValueInfo: Codec.Format.Values.StringValueInfo;
StringValue: Codec.Format.Values.StringValue;
StructResult: Codec.Format.Values.StructResult;
StructValue: Codec.Format.Values.StructValue;
TupleResult: Codec.Format.Values.TupleResult;
TupleValue: Codec.Format.Values.TupleValue;
TypeResult: Codec.Format.Values.TypeResult;
TypeValueContract: Codec.Format.Values.TypeValueContract;
TypeValueEnum: Codec.Format.Values.TypeValueEnum;
TypeValue: Codec.Format.Values.TypeValue;
UfixedResult: Codec.Format.Values.UfixedResult;
UfixedValue: Codec.Format.Values.UfixedValue;
UintResult: Codec.Format.Values.UintResult;
UintValue: Codec.Format.Values.UintValue;
UserDefinedValueTypeResult: Codec.Format.Values.UserDefinedValueTypeResult;
UserDefinedValueTypeValue: Codec.Format.Values.UserDefinedValueTypeValue;
Value: Codec.Format.Values.Value;
FunctionDecoding: Codec.FunctionDecoding;
LogDecoding: Codec.LogDecoding;
MessageDecoding: Codec.MessageDecoding;
Options: Codec.Options;
RawReturnDecoding: Codec.RawReturnDecoding;
ReturnDecoding: Codec.ReturnDecoding;
ReturndataDecoding: Codec.ReturndataDecoding;
RevertMessageDecoding: Codec.RevertMessageDecoding;
SelfDestructDecoding: Codec.SelfDestructDecoding;
StateVariable: Codec.StateVariable;
UnknownBytecodeDecoding: Codec.UnknownBytecodeDecoding;
UnknownCallDecoding: Codec.UnknownCallDecoding;
UnknownCreationDecoding: Codec.UnknownCreationDecoding;
}>
>;
common?: Partial<
CustomCommonComponents<{
AbiArguments: AbiArgumentsProps;
Code: CodeProps;
CodecError: CodecErrorProps;
Container: ContainerProps;
}>
>;
}
export const CustomComponentsContext =
createContext<CustomComponentsContextValue>({});
export const useCustomComponents = () => useContext(CustomComponentsContext);