Skip to content

Commit ead7c6b

Browse files
Origination operation type, fix processing multiple indexes (#41)
1 parent d1f7ad0 commit ead7c6b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+705
-412
lines changed

README.md

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,11 @@ indexes:
6060
handlers:
6161
- callback: on_mint
6262
pattern:
63-
- destination: HEN_minter
63+
- type: transaction
64+
destination: HEN_minter
6465
entrypoint: mint_OBJKT
65-
- destination: HEN_objkts
66+
- type: transaction
67+
destination: HEN_objkts
6668
entrypoint: mint
6769
```
6870
@@ -131,13 +133,13 @@ from demo_hic_et_nunc.types.hen_minter.parameter.mint_objkt import MintOBJKTPara
131133
from demo_hic_et_nunc.types.hen_minter.storage import HenMinterStorage
132134
from demo_hic_et_nunc.types.hen_objkts.parameter.mint import MintParameter
133135
from demo_hic_et_nunc.types.hen_objkts.storage import HenObjktsStorage
134-
from dipdup.models import OperationContext, OperationHandlerContext
136+
from dipdup.models import TransactionContext, OperationHandlerContext
135137
136138
137139
async def on_mint(
138140
ctx: OperationHandlerContext,
139-
mint_objkt: OperationContext[MintOBJKTParameter, HenMinterStorage],
140-
mint: OperationContext[MintParameter, HenObjktsStorage],
141+
mint_objkt: TransactionContext[MintOBJKTParameter, HenMinterStorage],
142+
mint: TransactionContext[MintParameter, HenObjktsStorage],
141143
) -> None:
142144
holder, _ = await models.Holder.get_or_create(address=mint.parameter.address)
143145
token = models.Token(
@@ -201,15 +203,19 @@ templates:
201203
handlers:
202204
- callback: on_fa12_token_to_tez
203205
pattern:
204-
- destination: <dex>
206+
- type: transaction
207+
destination: <dex>
205208
entrypoint: tokenToTezPayment
206-
- destination: <token>
209+
- type: transaction
210+
destination: <token>
207211
entrypoint: transfer
208212
- callback: on_fa20_tez_to_token
209213
pattern:
210-
- destination: <dex>
214+
- type: transaction
215+
destination: <dex>
211216
entrypoint: tezToTokenPayment
212-
- destination: <token>
217+
- type: transaction
218+
destination: <token>
213219
entrypoint: transfer
214220
215221
indexes:

src/demo_hic_et_nunc/dipdup.yml

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,24 @@ indexes:
2727
handlers:
2828
- callback: on_mint
2929
pattern:
30-
- destination: HEN_minter
30+
- type: transaction
31+
destination: HEN_minter
3132
entrypoint: mint_OBJKT
32-
- destination: HEN_objkts
33+
- type: transaction
34+
destination: HEN_objkts
3335
entrypoint: mint
3436
- callback: on_swap
3537
pattern:
36-
- destination: HEN_minter
38+
- type: transaction
39+
destination: HEN_minter
3740
entrypoint: swap
3841
- callback: on_cancel_swap
3942
pattern:
40-
- destination: HEN_minter
43+
- type: transaction
44+
destination: HEN_minter
4145
entrypoint: cancel_swap
4246
- callback: on_collect
4347
pattern:
44-
- destination: HEN_minter
48+
- type: transaction
49+
destination: HEN_minter
4550
entrypoint: collect

src/demo_hic_et_nunc/handlers/on_cancel_swap.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import demo_hic_et_nunc.models as models
22
from demo_hic_et_nunc.types.hen_minter.parameter.cancel_swap import CancelSwapParameter
33
from demo_hic_et_nunc.types.hen_minter.storage import HenMinterStorage
4-
from dipdup.models import OperationContext, OperationHandlerContext
4+
from dipdup.models import OperationHandlerContext, TransactionContext
55

66

77
async def on_cancel_swap(
88
ctx: OperationHandlerContext,
9-
cancel_swap: OperationContext[CancelSwapParameter, HenMinterStorage],
9+
cancel_swap: TransactionContext[CancelSwapParameter, HenMinterStorage],
1010
) -> None:
1111
swap = await models.Swap.filter(id=int(cancel_swap.parameter.__root__)).get()
1212
swap.status = models.SwapStatus.CANCELED

src/demo_hic_et_nunc/handlers/on_collect.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import demo_hic_et_nunc.models as models
22
from demo_hic_et_nunc.types.hen_minter.parameter.collect import CollectParameter
33
from demo_hic_et_nunc.types.hen_minter.storage import HenMinterStorage
4-
from dipdup.models import OperationContext, OperationHandlerContext
4+
from dipdup.models import OperationHandlerContext, TransactionContext
55

66

77
async def on_collect(
88
ctx: OperationHandlerContext,
9-
collect: OperationContext[CollectParameter, HenMinterStorage],
9+
collect: TransactionContext[CollectParameter, HenMinterStorage],
1010
) -> None:
1111
swap = await models.Swap.filter(id=collect.parameter.swap_id).get()
1212
seller = await swap.creator

src/demo_hic_et_nunc/handlers/on_mint.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
from demo_hic_et_nunc.types.hen_minter.storage import HenMinterStorage
44
from demo_hic_et_nunc.types.hen_objkts.parameter.mint import MintParameter
55
from demo_hic_et_nunc.types.hen_objkts.storage import HenObjktsStorage
6-
from dipdup.models import OperationContext, OperationHandlerContext
6+
from dipdup.models import OperationHandlerContext, TransactionContext
77

88

99
async def on_mint(
1010
ctx: OperationHandlerContext,
11-
mint_objkt: OperationContext[MintOBJKTParameter, HenMinterStorage],
12-
mint: OperationContext[MintParameter, HenObjktsStorage],
11+
mint_objkt: TransactionContext[MintOBJKTParameter, HenMinterStorage],
12+
mint: TransactionContext[MintParameter, HenObjktsStorage],
1313
) -> None:
1414
holder, _ = await models.Holder.get_or_create(address=mint.parameter.address)
1515
token = models.Token(

src/demo_hic_et_nunc/handlers/on_swap.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import demo_hic_et_nunc.models as models
22
from demo_hic_et_nunc.types.hen_minter.parameter.swap import SwapParameter
33
from demo_hic_et_nunc.types.hen_minter.storage import HenMinterStorage
4-
from dipdup.models import OperationContext, OperationHandlerContext
4+
from dipdup.models import OperationHandlerContext, TransactionContext
55

66

77
async def on_swap(
88
ctx: OperationHandlerContext,
9-
swap: OperationContext[SwapParameter, HenMinterStorage],
9+
swap: TransactionContext[SwapParameter, HenMinterStorage],
1010
) -> None:
1111
holder, _ = await models.Holder.get_or_create(address=swap.data.sender_address)
1212
swap_model = models.Swap(

src/demo_quipuswap/dipdup.yml

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -39,31 +39,40 @@ templates:
3939
handlers:
4040
- callback: on_fa12_token_to_tez
4141
pattern:
42-
- destination: <dex_contract>
42+
- type: transaction
43+
destination: <dex_contract>
4344
entrypoint: tokenToTezPayment
44-
- destination: <token_contract>
45+
- type: transaction
46+
destination: <token_contract>
4547
entrypoint: transfer
4648
- callback: on_fa12_tez_to_token
4749
pattern:
48-
- destination: <dex_contract>
50+
- type: transaction
51+
destination: <dex_contract>
4952
entrypoint: tezToTokenPayment
50-
- destination: <token_contract>
53+
- type: transaction
54+
destination: <token_contract>
5155
entrypoint: transfer
5256
- callback: on_fa12_invest_liquidity
5357
pattern:
54-
- destination: <dex_contract>
58+
- type: transaction
59+
destination: <dex_contract>
5560
entrypoint: investLiquidity
56-
- destination: <token_contract>
61+
- type: transaction
62+
destination: <token_contract>
5763
entrypoint: transfer
5864
- callback: on_fa12_divest_liquidity
5965
pattern:
60-
- destination: <dex_contract>
66+
- type: transaction
67+
destination: <dex_contract>
6168
entrypoint: divestLiquidity
62-
- destination: <token_contract>
69+
- type: transaction
70+
destination: <token_contract>
6371
entrypoint: transfer
6472
- callback: on_fa12_withdraw_profit
6573
pattern:
66-
- destination: <dex_contract>
74+
- type: transaction
75+
destination: <dex_contract>
6776
entrypoint: withdrawProfit
6877

6978
quipuswap_fa2:
@@ -74,31 +83,40 @@ templates:
7483
handlers:
7584
- callback: on_fa2_token_to_tez
7685
pattern:
77-
- destination: <dex_contract>
86+
- type: transaction
87+
destination: <dex_contract>
7888
entrypoint: tokenToTezPayment
79-
- destination: <token_contract>
89+
- type: transaction
90+
destination: <token_contract>
8091
entrypoint: transfer
8192
- callback: on_fa2_tez_to_token
8293
pattern:
83-
- destination: <dex_contract>
94+
- type: transaction
95+
destination: <dex_contract>
8496
entrypoint: tezToTokenPayment
85-
- destination: <token_contract>
97+
- type: transaction
98+
destination: <token_contract>
8699
entrypoint: transfer
87100
- callback: on_fa20_invest_liquidity
88101
pattern:
89-
- destination: <dex_contract>
102+
- type: transaction
103+
destination: <dex_contract>
90104
entrypoint: investLiquidity
91-
- destination: <token_contract>
105+
- type: transaction
106+
destination: <token_contract>
92107
entrypoint: transfer
93108
- callback: on_fa20_divest_liquidity
94109
pattern:
95-
- destination: <dex_contract>
110+
- type: transaction
111+
destination: <dex_contract>
96112
entrypoint: divestLiquidity
97-
- destination: <token_contract>
113+
- type: transaction
114+
destination: <token_contract>
98115
entrypoint: transfer
99116
- callback: on_fa20_withdraw_profit
100117
pattern:
101-
- destination: <dex_contract>
118+
- type: transaction
119+
destination: <dex_contract>
102120
entrypoint: withdrawProfit
103121

104122
indexes:

src/demo_quipuswap/handlers/on_fa12_divest_liquidity.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
from demo_quipuswap.types.fa12_token.storage import Fa12TokenStorage
66
from demo_quipuswap.types.quipu_fa12.parameter.divest_liquidity import DivestLiquidityParameter
77
from demo_quipuswap.types.quipu_fa12.storage import QuipuFa12Storage
8-
from dipdup.models import OperationContext, OperationHandlerContext
8+
from dipdup.models import OperationHandlerContext, TransactionContext
99

1010

1111
async def on_fa12_divest_liquidity(
1212
ctx: OperationHandlerContext,
13-
divest_liquidity: OperationContext[DivestLiquidityParameter, QuipuFa12Storage],
14-
transfer: OperationContext[TransferParameter, Fa12TokenStorage],
13+
divest_liquidity: TransactionContext[DivestLiquidityParameter, QuipuFa12Storage],
14+
transfer: TransactionContext[TransferParameter, Fa12TokenStorage],
1515
) -> None:
1616
if ctx.template_values is None:
1717
raise Exception('This index must be templated')
@@ -25,6 +25,7 @@ async def on_fa12_divest_liquidity(
2525
position, _ = await models.Position.get_or_create(trader=trader, symbol=symbol)
2626
transaction = next(op for op in ctx.operations if op.amount)
2727

28+
assert transaction.amount is not None
2829
tez_qty = Decimal(transaction.amount) / (10 ** 6)
2930
token_qty = Decimal(transfer.parameter.value) / (10 ** decimals)
3031
shares_qty = int(divest_liquidity.parameter.shares)

src/demo_quipuswap/handlers/on_fa12_invest_liquidity.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
from demo_quipuswap.types.fa12_token.storage import Fa12TokenStorage
66
from demo_quipuswap.types.quipu_fa12.parameter.invest_liquidity import InvestLiquidityParameter
77
from demo_quipuswap.types.quipu_fa12.storage import QuipuFa12Storage
8-
from dipdup.models import OperationContext, OperationHandlerContext
8+
from dipdup.models import OperationHandlerContext, TransactionContext
99

1010

1111
async def on_fa12_invest_liquidity(
1212
ctx: OperationHandlerContext,
13-
invest_liquidity: OperationContext[InvestLiquidityParameter, QuipuFa12Storage],
14-
transfer: OperationContext[TransferParameter, Fa12TokenStorage],
13+
invest_liquidity: TransactionContext[InvestLiquidityParameter, QuipuFa12Storage],
14+
transfer: TransactionContext[TransferParameter, Fa12TokenStorage],
1515
) -> None:
1616
if ctx.template_values is None:
1717
raise Exception('This index must be templated')
@@ -24,6 +24,7 @@ async def on_fa12_invest_liquidity(
2424

2525
position, _ = await models.Position.get_or_create(trader=trader, symbol=symbol)
2626

27+
assert invest_liquidity.data.amount is not None
2728
tez_qty = Decimal(invest_liquidity.data.amount) / (10 ** 6)
2829
token_qty = Decimal(transfer.parameter.value) / (10 ** decimals)
2930
new_shares_qty = int(storage.storage.ledger[trader].balance) + int(storage.storage.ledger[trader].frozen_balance) # type: ignore

src/demo_quipuswap/handlers/on_fa12_tez_to_token.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
from demo_quipuswap.types.fa12_token.storage import Fa12TokenStorage
66
from demo_quipuswap.types.quipu_fa12.parameter.tez_to_token_payment import TezToTokenPaymentParameter
77
from demo_quipuswap.types.quipu_fa12.storage import QuipuFa12Storage
8-
from dipdup.models import OperationContext, OperationHandlerContext
8+
from dipdup.models import OperationHandlerContext, TransactionContext
99

1010

1111
async def on_fa12_tez_to_token(
1212
ctx: OperationHandlerContext,
13-
tez_to_token_payment: OperationContext[TezToTokenPaymentParameter, QuipuFa12Storage],
14-
transfer: OperationContext[TransferParameter, Fa12TokenStorage],
13+
tez_to_token_payment: TransactionContext[TezToTokenPaymentParameter, QuipuFa12Storage],
14+
transfer: TransactionContext[TransferParameter, Fa12TokenStorage],
1515
) -> None:
1616
if ctx.template_values is None:
1717
raise Exception('This index must be templated')
@@ -22,6 +22,7 @@ async def on_fa12_tez_to_token(
2222

2323
min_token_quantity = Decimal(tez_to_token_payment.parameter.min_out) / (10 ** decimals)
2424
token_quantity = Decimal(transfer.parameter.value) / (10 ** decimals)
25+
assert tez_to_token_payment.data.amount is not None
2526
tez_quantity = Decimal(tez_to_token_payment.data.amount) / (10 ** 6)
2627
assert min_token_quantity <= token_quantity, tez_to_token_payment.data.hash
2728

0 commit comments

Comments
 (0)