First type of discounts in grandnode is discount amount provider.
To make it, inherit from IDiscountAmountProvider and implement method DiscountAmount.
Here you can see simple plugin which will discount every third element in shopping card, applies to product or categories.
Add new discount
In cart you can see this that every third element is for free.
Second type of discounts in grandnode is discount requirements
Inherit from IDiscount and implement method GetRequirementRules
Example of DiscountRequirementRole
As you can see, you have to inherit from IDiscountRequirementRule.
You have to add new discounts same as in previous method.