import { WeiAmount } from '@streamr/utils';
import { Provider, Wallet } from 'ethers';
import { SignerWithProvider } from '../Authentication';
import type { DATAv2 as DATATokenContract } from '../ethereumArtifacts/DATAv2';
import type { Operator as OperatorContract } from '../ethereumArtifacts/Operator';
import type { Sponsorship as SponsorshipContract } from '../ethereumArtifacts/Sponsorship';
/**
 * @deprecated
 * @hidden
 */
export interface SetupOperatorContractOpts {
    nodeCount?: number;
    operatorConfig?: {
        operatorsCutPercentage?: number;
        metadata?: string;
    };
    generateWalletWithGasAndTokens: () => Promise<Wallet & SignerWithProvider>;
}
/**
 * @deprecated
 * @hidden
 */
export interface SetupOperatorContractReturnType {
    operatorWallet: Wallet & SignerWithProvider;
    operatorContract: OperatorContract;
    nodeWallets: (Wallet & SignerWithProvider)[];
}
export declare function setupOperatorContract(opts: SetupOperatorContractOpts): Promise<SetupOperatorContractReturnType>;
/**
 * @deprecated
 * @hidden
 */
export interface DeployOperatorContractOpts {
    deployer: Wallet;
    operatorsCutPercentage?: number;
    metadata?: string;
    operatorTokenName?: string;
}
/**
 * @param opts.deployer should be the operator's Wallet
 * @returns Operator
 */
export declare function deployOperatorContract(opts: DeployOperatorContractOpts): Promise<OperatorContract>;
/**
 * @deprecated
 * @hidden
 */
export interface DeploySponsorshipContractOpts {
    streamId: string;
    deployer: Wallet;
    metadata?: string;
    minOperatorCount?: number;
    earningsPerSecond?: WeiAmount;
}
export declare function deploySponsorshipContract(opts: DeploySponsorshipContractOpts): Promise<SponsorshipContract>;
export declare function getProvider(): Provider;
export declare function getTestTokenContract(): DATATokenContract;
export declare const getTestAdminWallet: (adminKey?: string, provider?: Provider) => Wallet;
export declare const delegate: (delegator: SignerWithProvider, operatorContractAddress: string, amount: WeiAmount, token?: DATATokenContract) => Promise<void>;
export declare const undelegate: (delegator: SignerWithProvider, operatorContract: OperatorContract, amount: WeiAmount) => Promise<void>;
export declare const stake: (operatorContract: OperatorContract, sponsorshipContractAddress: string, amount: WeiAmount) => Promise<void>;
export declare const unstake: (operatorContract: OperatorContract, sponsorshipContractAddress: string) => Promise<void>;
export declare const sponsor: (sponsorer: SignerWithProvider, sponsorshipContractAddress: string, amount: WeiAmount, token?: DATATokenContract) => Promise<void>;
export declare const transferTokens: (from: SignerWithProvider, to: string, amount: WeiAmount, data?: string, token?: DATATokenContract) => Promise<void>;
export declare const getOperatorContract: (operatorAddress: string) => OperatorContract;
