import 'dart:convert';
import 'package:portal_flutter/portal_flutter.dart';
Future<String> signPermit({
required Portal portal,
required String owner,
required String spender,
required String tokenAddress,
required int value,
required int nonce,
required int deadline,
}) async {
final typedData = jsonEncode({
'primaryType': 'Permit',
'types': {
'EIP712Domain': [
{'name': 'name', 'type': 'string'},
{'name': 'version', 'type': 'string'},
{'name': 'chainId', 'type': 'uint256'},
{'name': 'verifyingContract', 'type': 'address'},
],
'Permit': [
{'name': 'owner', 'type': 'address'},
{'name': 'spender', 'type': 'address'},
{'name': 'value', 'type': 'uint256'},
{'name': 'nonce', 'type': 'uint256'},
{'name': 'deadline', 'type': 'uint256'},
],
},
'domain': {
'name': 'MyToken',
'version': '1',
'chainId': 1,
'verifyingContract': tokenAddress,
},
'message': {
'owner': owner,
'spender': spender,
'value': value,
'nonce': nonce,
'deadline': deadline,
},
});
return portal.signTypedData(
chainId: 'eip155:1',
typedData: typedData,
);
}