use near_sdk::near; use near_sdk::{ext_contract, AccountId, Promise, StorageUsage}; use std::collections::HashMap; #[near(serializers = [borsh])] pub struct InputData { pub accounts: HashMap, pub total_supply: Option, } #[near(serializers = [borsh])] #[derive(Debug, Eq, PartialEq)] pub enum CheckResult { Success, AccountNotExist(Vec), AccountAmount(HashMap), TotalSupply(u128), StorageUsage(StorageUsage), Proof(Vec), } #[ext_contract(ext_deposit)] pub trait Migration { fn migrate(&mut self, #[serializer(borsh)] accounts: Vec) -> Promise; fn migrate_callback( &mut self, #[callback] #[serializer(borsh)] balances: aurora_engine_types::HashMap, ); #[result_serializer(borsh)] fn check_migration_correctness(&self, #[serializer(borsh)] data: InputData) -> CheckResult; }