The Giftcard products are going to be implemented as simple virtual products or configurable virtual products, according to the available options. For giftcard that can be configured in amount they will be configurable virtual products. For fixed amount giftcard, they will be simple virtual products.
Virtual products: An important update in needed, so "virtual" is not a product type any more, but an optional characteristics of the products. It may be modelated using a system attribute or a static attribute. This would make possible to have simple virtual products (up to now called "virtual"), and also configurable virtual products (not supported before this feature, and required to create configurable giftcards).
Cart post-actions: Support will be added to the cart to execute post-actions based on asynchronous events. This generic support will be used to create coupons maked as "giftcard", so the discount logic is managed by the Coupons feature. At that moment is also calculated the giftcard expiration datetime taking into account the current datetime. Also this support can be used to send the giftcard codes to recipients.
Products / Cart / Order: The giftcard information required to create the coupon must be attached to the cart item. Then when the coupon is generated, the coupon information is attached to the order and/or cart.