{"version":3,"file":"type-mapping-M_1E1k5X-BjPvcW0c.mjs","names":[],"sources":["../../adapter-evm-core/dist/type-mapping-M_1E1k5X.mjs"],"sourcesContent":["import { n as asTypedEvmNetworkConfig, u as withRuntimeCapability } from \"./helpers-CYDHdjrw.mjs\";\nimport { enhanceNumericValidation, getDefaultValueForType } from \"@openzeppelin/ui-utils\";\nimport startCase from \"lodash-es/startCase.js\";\n\n//#region src/mapping/constants.ts\n/**\n* EVM-specific type mapping to default form field types.\n*\n* Note: Large integer types (uint128, uint256, int128, int256) are mapped to 'bigint'\n* instead of 'number' to avoid JavaScript's Number precision limitations.\n* JavaScript's Number type can only safely represent integers up to 2^53 - 1,\n* but these types can hold much larger values. The BigIntField component stores values\n* as strings and the EVM adapter handles BigInt conversion automatically.\n*/\nconst EVM_TYPE_TO_FIELD_TYPE = {\n\taddress: \"blockchain-address\",\n\tstring: \"text\",\n\tuint: \"number\",\n\tuint8: \"number\",\n\tuint16: \"number\",\n\tuint32: \"number\",\n\tuint64: \"bigint\",\n\tuint128: \"bigint\",\n\tuint256: \"bigint\",\n\tint: \"number\",\n\tint8: \"number\",\n\tint16: \"number\",\n\tint32: \"number\",\n\tint64: \"bigint\",\n\tint128: \"bigint\",\n\tint256: \"bigint\",\n\tbool: \"checkbox\",\n\tbytes: \"bytes\",\n\tbytes32: \"bytes\"\n};\n/**\n* EVM dynamic type patterns handled through pattern matching.\n*/\nconst EVM_DYNAMIC_PATTERNS = [\n\t{\n\t\tname: \"array\",\n\t\tsyntax: \"T[]\",\n\t\tmapsTo: \"array\",\n\t\tdescription: \"Dynamic array of primitives\"\n\t},\n\t{\n\t\tname: \"fixed-array\",\n\t\tsyntax: \"T[N]\",\n\t\tmapsTo: \"array\",\n\t\tdescription: \"Fixed-size array\"\n\t},\n\t{\n\t\tname: \"tuple-array\",\n\t\tsyntax: \"tuple[]\",\n\t\tmapsTo: \"array-object\",\n\t\tdescription: \"Array of structs\"\n\t},\n\t{\n\t\tname: \"tuple\",\n\t\tsyntax: \"tuple\",\n\t\tmapsTo: \"object\",\n\t\tdescription: \"Struct/tuple type\"\n\t}\n];\n/**\n* Returns complete type mapping information for EVM.\n*/\nfunction getEvmTypeMappingInfo() {\n\treturn {\n\t\tprimitives: { ...EVM_TYPE_TO_FIELD_TYPE },\n\t\tdynamicPatterns: EVM_DYNAMIC_PATTERNS\n\t};\n}\n\n//#endregion\n//#region src/mapping/type-mapper.ts\n/**\n* Map a blockchain-specific parameter type to a default form field type.\n* @param parameterType The blockchain parameter type (e.g., 'uint256', 'address', 'tuple')\n* @returns The appropriate default form field type (e.g., 'number', 'blockchain-address', 'object')\n*/\nfunction mapEvmParamTypeToFieldType(parameterType) {\n\tif (parameterType.match(/^tuple\\[\\d*\\]$/)) return \"array-object\";\n\tif (parameterType.match(/\\[\\d*\\]$/)) return \"array\";\n\tconst baseType = parameterType.replace(/\\[\\d*\\]/g, \"\");\n\tif (baseType.startsWith(\"tuple\")) return \"object\";\n\tif (baseType.match(/^bytes\\d+$/)) return \"bytes\";\n\treturn EVM_TYPE_TO_FIELD_TYPE[baseType] || \"text\";\n}\n/**\n* Get field types compatible with a specific parameter type.\n* @param parameterType The blockchain parameter type.\n* @returns Array of compatible form field types.\n*/\nfunction getEvmCompatibleFieldTypes(parameterType) {\n\tif (parameterType.match(/^tuple\\[\\d*\\]$/)) return [\n\t\t\"array-object\",\n\t\t\"textarea\",\n\t\t\"text\"\n\t];\n\tif (parameterType.match(/\\[\\d*\\]$/)) return [\n\t\t\"array\",\n\t\t\"textarea\",\n\t\t\"text\"\n\t];\n\tconst baseType = parameterType.replace(/\\[\\d*\\]/g, \"\");\n\tif (baseType.startsWith(\"tuple\")) return [\n\t\t\"object\",\n\t\t\"textarea\",\n\t\t\"text\"\n\t];\n\tconst compatibilityMap = {\n\t\taddress: [\"blockchain-address\", \"text\"],\n\t\tuint: [\n\t\t\t\"number\",\n\t\t\t\"amount\",\n\t\t\t\"text\"\n\t\t],\n\t\tuint8: [\n\t\t\t\"number\",\n\t\t\t\"amount\",\n\t\t\t\"text\"\n\t\t],\n\t\tuint16: [\n\t\t\t\"number\",\n\t\t\t\"amount\",\n\t\t\t\"text\"\n\t\t],\n\t\tuint32: [\n\t\t\t\"number\",\n\t\t\t\"amount\",\n\t\t\t\"text\"\n\t\t],\n\t\tuint64: [\n\t\t\t\"bigint\",\n\t\t\t\"number\",\n\t\t\t\"amount\",\n\t\t\t\"text\"\n\t\t],\n\t\tuint128: [\n\t\t\t\"bigint\",\n\t\t\t\"number\",\n\t\t\t\"amount\",\n\t\t\t\"text\"\n\t\t],\n\t\tuint256: [\n\t\t\t\"bigint\",\n\t\t\t\"number\",\n\t\t\t\"amount\",\n\t\t\t\"text\"\n\t\t],\n\t\tint: [\"number\", \"text\"],\n\t\tint8: [\"number\", \"text\"],\n\t\tint16: [\"number\", \"text\"],\n\t\tint32: [\"number\", \"text\"],\n\t\tint64: [\n\t\t\t\"bigint\",\n\t\t\t\"number\",\n\t\t\t\"text\"\n\t\t],\n\t\tint128: [\n\t\t\t\"bigint\",\n\t\t\t\"number\",\n\t\t\t\"text\"\n\t\t],\n\t\tint256: [\n\t\t\t\"bigint\",\n\t\t\t\"number\",\n\t\t\t\"text\"\n\t\t],\n\t\tbool: [\n\t\t\t\"checkbox\",\n\t\t\t\"select\",\n\t\t\t\"radio\",\n\t\t\t\"text\"\n\t\t],\n\t\tstring: [\n\t\t\t\"text\",\n\t\t\t\"textarea\",\n\t\t\t\"email\",\n\t\t\t\"password\"\n\t\t],\n\t\tbytes: [\n\t\t\t\"bytes\",\n\t\t\t\"textarea\",\n\t\t\t\"text\"\n\t\t],\n\t\tbytes32: [\n\t\t\t\"bytes\",\n\t\t\t\"textarea\",\n\t\t\t\"text\"\n\t\t]\n\t};\n\tif (baseType.match(/^bytes\\d+$/)) return [\n\t\t\"bytes\",\n\t\t\"textarea\",\n\t\t\"text\"\n\t];\n\treturn compatibilityMap[baseType] || [\"text\"];\n}\n\n//#endregion\n//#region src/mapping/field-generator.ts\n/**\n* Extracts the byte size from a fixed-size bytes type (e.g., bytes32 -> 32)\n* @param parameterType - The parameter type (e.g., 'bytes32', 'bytes4', 'bytes')\n* @returns The byte size if fixed-size, undefined if dynamic\n*/\nfunction extractBytesSize(parameterType) {\n\tconst match = parameterType.match(/^bytes(\\d+)$/);\n\tif (match) return Number.parseInt(match[1], 10);\n}\n/**\n* Extracts the inner type from an EVM array type.\n* @param parameterType - The parameter type (e.g., 'uint32[]', 'address[]')\n* @returns The inner type (e.g., 'uint32', 'address') or null if not an array type\n*/\nfunction extractArrayElementType(parameterType) {\n\tconst arrayMatch = parameterType.match(/^(.+)\\[\\d*\\]$/);\n\tif (arrayMatch) return arrayMatch[1];\n\treturn null;\n}\n/**\n* Get default validation rules for a parameter.\n* Field-specific validation is handled by the field components themselves.\n*/\nfunction getDefaultValidation() {\n\treturn { required: true };\n}\n/**\n* EVM numeric type bounds.\n* Maps EVM type names to their min/max value constraints.\n* Note: uint64, uint128, uint256, int64, int128, int256 exceed JavaScript's Number.MAX_SAFE_INTEGER\n* and are handled via BigInt fields, so bounds are not applied here.\n*/\nconst EVM_NUMERIC_BOUNDS = {\n\tuint: { min: 0 },\n\tuint8: {\n\t\tmin: 0,\n\t\tmax: 255\n\t},\n\tuint16: {\n\t\tmin: 0,\n\t\tmax: 65535\n\t},\n\tuint32: {\n\t\tmin: 0,\n\t\tmax: 4294967295\n\t},\n\tint: {},\n\tint8: {\n\t\tmin: -128,\n\t\tmax: 127\n\t},\n\tint16: {\n\t\tmin: -32768,\n\t\tmax: 32767\n\t},\n\tint32: {\n\t\tmin: -2147483648,\n\t\tmax: 2147483647\n\t}\n};\n/**\n* Generate default field configuration for an EVM function parameter.\n*/\nfunction generateEvmDefaultField(parameter) {\n\tconst fieldType = mapEvmParamTypeToFieldType(parameter.type);\n\tconst baseField = {\n\t\tid: `field-${Math.random().toString(36).substring(2, 9)}`,\n\t\tname: parameter.name || parameter.type,\n\t\tlabel: startCase(parameter.displayName || parameter.name || parameter.type),\n\t\ttype: fieldType,\n\t\tplaceholder: `Enter ${parameter.displayName || parameter.name || parameter.type}`,\n\t\thelperText: parameter.description || \"\",\n\t\tdefaultValue: getDefaultValueForType(fieldType),\n\t\tvalidation: enhanceNumericValidation(getDefaultValidation(), parameter.type, EVM_NUMERIC_BOUNDS),\n\t\twidth: \"full\"\n\t};\n\tconst bytesSize = extractBytesSize(parameter.type);\n\tif (bytesSize !== void 0) baseField.metadata = {\n\t\t...baseField.metadata ?? {},\n\t\texactBytes: bytesSize\n\t};\n\tif (fieldType === \"array\") {\n\t\tconst elementType = extractArrayElementType(parameter.type);\n\t\tif (elementType) {\n\t\t\tconst elementFieldType = mapEvmParamTypeToFieldType(elementType);\n\t\t\tconst elementBytesSize = extractBytesSize(elementType);\n\t\t\treturn {\n\t\t\t\t...baseField,\n\t\t\t\telementType: elementFieldType,\n\t\t\t\telementFieldConfig: {\n\t\t\t\t\ttype: elementFieldType,\n\t\t\t\t\tvalidation: enhanceNumericValidation(getDefaultValidation(), elementType, EVM_NUMERIC_BOUNDS),\n\t\t\t\t\tplaceholder: `Enter ${elementType}`,\n\t\t\t\t\t...elementBytesSize !== void 0 && { metadata: { exactBytes: elementBytesSize } }\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t}\n\tif (parameter.components && (fieldType === \"object\" || fieldType === \"array-object\")) return {\n\t\t...baseField,\n\t\tcomponents: parameter.components\n\t};\n\treturn baseField;\n}\n\n//#endregion\n//#region src/capabilities/type-mapping.ts\nfunction createTypeMapping(config) {\n\tconst networkConfig = asTypedEvmNetworkConfig(config);\n\treturn Object.assign(withRuntimeCapability(networkConfig, \"typeMapping\"), {\n\t\tmapParameterTypeToFieldType(parameterType) {\n\t\t\treturn mapEvmParamTypeToFieldType(parameterType);\n\t\t},\n\t\tgetCompatibleFieldTypes(parameterType) {\n\t\t\treturn getEvmCompatibleFieldTypes(parameterType);\n\t\t},\n\t\tgenerateDefaultField(parameter, _contractSchema) {\n\t\t\treturn generateEvmDefaultField(parameter);\n\t\t},\n\t\tgetTypeMappingInfo() {\n\t\t\treturn getEvmTypeMappingInfo();\n\t\t}\n\t});\n}\n\n//#endregion\nexport { EVM_TYPE_TO_FIELD_TYPE as a, mapEvmParamTypeToFieldType as i, generateEvmDefaultField as n, getEvmTypeMappingInfo as o, getEvmCompatibleFieldTypes as r, createTypeMapping as t };\n//# sourceMappingURL=type-mapping-M_1E1k5X.mjs.map"],"mappings":"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"}