import { EVMContractAddress, BlockchainCommonErrors, EVMAccountAddress, TokenAmount, SnickerdoodleFactoryContractError, LayerZeroEndpointId, InvalidParametersError, OperatorDomain, SnickerdoodleWalletUsername } from "@snickerdoodlelabs/objects"; import { BytesLike } from "ethers"; import { ResultAsync } from "neverthrow"; import { IBaseContract } from "../interfaces/IBaseContract.js"; import { ContractOverrides, P256KeyStruct, WrappedTransactionResponse } from "../interfaces/objects"; export interface ISnickerdoodleFactoryContract extends IBaseContract { /** * Sets the peer contract address on the destination chain's smart wallet factory address */ setPeer(layerZeroEndpointId: LayerZeroEndpointId, SnickerdoodleWalletFactoryAddress: EVMContractAddress, overrides?: ContractOverrides): ResultAsync; /** * Returns the contract address of a peer EID registered on the contract */ peers(destinationChainEid: LayerZeroEndpointId): ResultAsync; /** * Returns the wallet beacon address */ walletBeaconAddress(): ResultAsync; /** * Returns the operator gateway beacon address */ operatorGatewayBeaconAddress(): ResultAsync; /** * Deploys multiple wallet proxies */ deployWalletProxies(usernames: SnickerdoodleWalletUsername[], p256Keys: P256KeyStruct[][], evmAccounts: EVMContractAddress[][] | EVMAccountAddress[][], overrides?: ContractOverrides): ResultAsync; /** * Deploys single wallet proxies */ deployWalletProxy(username: SnickerdoodleWalletUsername, p256Keys: P256KeyStruct[], evmAccounts: EVMContractAddress[] | EVMAccountAddress[], overrides?: ContractOverrides): ResultAsync; /** * Update the wallet hash of the Snickerdoodle wallet */ updateWalletHash(newWalletHash: BytesLike, overrides?: ContractOverrides): ResultAsync; /** * Deploys a new operator gateway proxy */ deployOperatorGatewayProxy(domain: OperatorDomain, adminAccounts: EVMAccountAddress[] | EVMContractAddress[], operatorAccounts: EVMAccountAddress[] | EVMContractAddress[], overrides?: ContractOverrides): ResultAsync; /** * Authorizes an operator gateway on the destination chain * Sends a Layer Zero message to authorize the operator gateway on the destination chain * nativeTokenFee - The amount of native token to be paid to send the message to the destination chain * gas - The gas required to execute the _lzReceive() function on the destination chain */ authorizeOperatorGatewayOnDestinationChain(destinationLayerZeroEndpointId: LayerZeroEndpointId, domain: OperatorDomain, gas: bigint, nativeTokenFee: bigint, overrides?: ContractOverrides): ResultAsync; /** * Returns the estimated fees in native token to send the Layer Zero message to the destination chain * gas - The gas required to execute the _lzReceive() function on the destination chain */ quoteAuthorizeOperatorGatewayOnDestinationChain(destinationLayerZeroEndpointId: LayerZeroEndpointId, domain: OperatorDomain, gas: bigint): ResultAsync; /** * Returns the calculate the proxy address * salt - for user wallets, is its username plus domain name * salt - for operator gateways, it is the domain name * beaconAddress - The respective wallet or operator gateway beacon address */ computeProxyAddress(salt: string, // The salt used to create the proxy address beaconAddress: EVMContractAddress): ResultAsync; /** * Returns the wallet address of the Snickerdoodle wallet * username - The username of the wallet */ computeWalletAddress(username: SnickerdoodleWalletUsername): ResultAsync; /** * Returns the domain name of the operator gateway * operatorGatewayAddress - The operator gateway address */ getOperatorDomainName(operatorGatewayAddress: EVMContractAddress): ResultAsync; /** * Returns the wallet hash generated from msg.sender, name, keyIds, xs, ys, evmAccounts * walletAddress - The wallet address */ getWalletHash(walletAddress: EVMContractAddress): ResultAsync; /** * Returns the operator hash generated from domain, adminAccounts, operatorAccounts * operatorGatewayAddress - The operator gateway address */ getOperatorHash(operatorGatewayAddress: EVMContractAddress): ResultAsync; } export declare const ISnickerdoodleWalletFactoryContractType: unique symbol; //# sourceMappingURL=ISnickerdoodleWalletFactoryContract.d.ts.map