type EcdsaCurve = variant { secp256k1 };
type EcdsaKeyId = record { name : text; curve : EcdsaCurve };
type EthMainnetService = variant {
Alchemy;
BlockPi;
Cloudflare;
PublicNode;
Ankr;
};
type HttpHeader = record { value : text; name : text };
type InitArg = record {
ecdsa_key_id : EcdsaKeyId;
rpc_service : RpcService;
filter_addresses : vec text;
chain_id : nat64;
coprocessor_evm_address : text;
filter_events : vec text;
};
type L2MainnetService = variant { Alchemy; BlockPi; PublicNode; Ankr };
type RpcApi = record { url : text; headers : opt vec HttpHeader };
type RpcService = variant {
EthSepolia : L2MainnetService;
BaseMainnet : L2MainnetService;
Custom : RpcApi;
OptimismMainnet : L2MainnetService;
ArbitrumOne : L2MainnetService;
EthMainnet : EthMainnetService;
Chain : nat64;
Provider : nat64;
};
service : (InitArg) -> { get_evm_address : () -> (opt text) query }