import { API, NameType, Action, AuthorityType, PermissionLevelType } from '@wharfkit/antelope';
import { Contract } from './Contract';
import { Authority } from '../eosio/authority';
import { Signer } from '../eosio/transaction';
import { ActionOptions } from '@wharfkit/contract';
export declare class EosioContract extends Contract {
    static atAccount(account?: NameType): Promise<EosioContract>;
    static fromAbi(abi: any, account?: NameType): EosioContract;
    actions: {
        setCode: (data: {
            account: NameType;
            vmtype: number;
            vmversion: number;
            code: string;
        }, authorization?: ActionOptions) => Action;
        setAbi: (data: {
            account: NameType;
            abi: string;
        }, authorization?: ActionOptions) => Action;
        updateAuth: (data: {
            account: NameType;
            permission: NameType;
            parent: NameType;
            auth: AuthorityType;
        }, authorization?: ActionOptions) => Action;
        newAccount: (data: {
            creator: NameType;
            name: NameType;
            owner: AuthorityType;
            active: AuthorityType;
        }, authorization?: ActionOptions) => Action;
        linkAuth: (data: {
            account: NameType;
            code: NameType;
            type: NameType;
            requirement: NameType;
        }, authorization?: ActionOptions) => Action;
        setPriv: (data: {
            account: NameType;
            isPriv: number;
        }, authorization?: ActionOptions) => Action;
        setParams: (data: {
            params: BlockchainParams;
        }, authorization?: ActionOptions) => Action;
    };
    /** prepare setcode & setabi actions */
    deployContractActions(account: NameType, wasmFileContent: string | Buffer, abiFileContent: string | Buffer, authOverride?: PermissionLevelType | PermissionLevelType[]): Promise<Action[]>;
    /** deploy contract via transact */
    deployContract(account: NameType, wasmFileContent: string | Buffer, abiFileContent: string | Buffer, signer: Signer | Signer[], authOverride?: PermissionLevelType | PermissionLevelType[]): Promise<API.v1.PushTransactionResponse>;
    updateAuth(account: NameType, permission: NameType, parent: NameType, auth: AuthorityType, signer: Signer, authParent?: boolean): Promise<API.v1.PushTransactionResponse>;
    newAccount(creator: NameType, name: NameType, owner: Authority, active: Authority, signer: Signer): Promise<API.v1.PushTransactionResponse>;
    linkAuth(account: NameType, code: NameType, type: NameType, requirement: NameType, signer: Signer): Promise<API.v1.PushTransactionResponse>;
    setPriv(account: NameType, isPriv: number, signer: Signer): Promise<API.v1.PushTransactionResponse>;
    setParams(blockchainParameters: BlockchainParams | undefined, signer: Signer): Promise<API.v1.PushTransactionResponse>;
}
export interface BlockchainParams {
    max_block_net_usage: number;
    target_block_net_usage_pct: number;
    max_transaction_net_usage: number;
    base_per_transaction_net_usage: number;
    net_usage_leeway: number;
    context_free_discount_net_usage_num: number;
    context_free_discount_net_usage_den: number;
    max_block_cpu_usage: number;
    target_block_cpu_usage_pct: number;
    max_transaction_cpu_usage: number;
    min_transaction_cpu_usage: number;
    max_transaction_lifetime: number;
    deferred_trx_expiration_window: number;
    max_transaction_delay: number;
    max_inline_action_size: number;
    max_inline_action_depth: number;
    max_authority_depth: number;
}
export declare const defaultBlockchainParams: BlockchainParams;
export declare const getEosioContract: () => EosioContract;
//# sourceMappingURL=EosioContract.d.ts.map