callArgToGrpcInput function
Implementation
Input callArgToGrpcInput(Map<String, dynamic> arg) {
switch (arg['\$kind']) {
case 'Pure':
return Input(kind: Input_InputKind.PURE, pure: base64Decode(arg['Pure']['bytes']));
case 'Object':
final obj = arg['Object'];
switch (obj['\$kind']) {
case 'ImmOrOwnedObject':
return Input(
kind: Input_InputKind.IMMUTABLE_OR_OWNED,
objectId: obj['ImmOrOwnedObject']['objectId'],
version: Int64.parseRadix(obj['ImmOrOwnedObject']['version'].toString(), 10),
digest: obj['ImmOrOwnedObject']['digest'],
);
case 'SharedObject':
return Input(
kind: Input_InputKind.SHARED,
objectId: obj['SharedObject']['objectId'],
version: Int64.parseRadix(obj['SharedObject']['initialSharedVersion'].toString(), 10),
mutable: obj['SharedObject']['mutable'],
);
case 'Receiving':
return Input(
kind: Input_InputKind.RECEIVING,
objectId: obj['Receiving']['objectId'],
version: Int64.parseRadix(obj['Receiving']['version'].toString(), 10),
digest: obj['Receiving']['digest'],
);
}
throw Exception("Unknown object kind: $obj");
case 'UnresolvedObject':
final u = arg['UnresolvedObject'];
return Input(
objectId: u['objectId'],
version: u['version'] != null
? Int64.parseRadix(u['version'].toString(), 10)
: u['initialSharedVersion'] != null
? Int64.parseRadix(u['initialSharedVersion'].toString(), 10)
: null,
digest: u['digest'],
mutable: u['mutable'],
);
case 'UnresolvedPure':
throw Exception("UnresolvedPure must be resolved before converting to gRPC");
case 'FundsWithdrawal':
final withdrawal = arg['FundsWithdrawal'];
return Input(
kind: Input_InputKind.FUNDS_WITHDRAWAL,
fundsWithdrawal: .new(
amount: withdrawal['reservation']['\$kind'] == 'MaxAmountU64'
? Int64.parseRadix(withdrawal['reservation']['MaxAmountU64'], 10)
: null,
coinType: withdrawal['typeArg']['\$kind'] == 'Balance'
? withdrawal['typeArg']['Balance']
: null,
source: withdrawal['withdrawFrom']['\$kind'] == 'Sponsor' ? .SPONSOR : .SENDER,
),
);
default:
throw Exception("Unknown CallArg: $arg");
}
}