It would be similar to wallet_call that is offered by cycle wallet at the moment.
type WalletResultCall = variant {
Ok : record { return: blob };
Err : text;
};
//Call Forwarding
wallet_call: (record {
canister: principal;
method_name: text;
args: blob;
cycles: nat64;
}) -> (WalletResultCall);
wallet_call128: (record {
canister: principal;
method_name: text;
args: blob;
cycles: nat;
}) -> (WalletResultCall);
This would enable users to make calls that require cycles. For example, an ICRC token canister may want its fees paid in cycles.
I know that there is a security concern of outstanding call contexts that could prevent ledger from being upgraded. But I still think this is worth discussing.