import { API, Signature, Checksum256, Name, PrivateKey } from '@wharfkit/antelope';
import { KeyManager, KeyManagerLevel } from '../../../storage/keymanager';
interface MapObject {
    [key: string]: any;
}
/**
 * Action data for a transaction
 * @property {string} account - The smart contract account name
 * @property {string} name - The name of the action (function in the smart contract)
 * @property {object} data - The data for the action (arguments for the function)
 * @property {MapObject} authorization - The authorization for the action
 */
export type ActionData = {
    authorization: {
        actor: string;
        permission: string;
    }[];
    account?: string;
    name: string;
    data: MapObject;
};
export interface Signer {
    sign(digest: Checksum256 | string): Promise<Signature>;
}
interface AntelopePushTransactionErrorConstructor {
    message: string;
    code: number;
    error: {
        code: number;
        name: string;
        what: string;
        details: [
            {
                message: string;
                file: string;
                line_number: number;
                method: string;
            }
        ];
    };
    actions?: ActionData[];
    contract?: Name;
}
export declare function createSigner(privateKey: PrivateKey): Signer;
export declare function createKeyManagerSigner(keyManager: KeyManager, level: KeyManagerLevel, challenge?: string): Signer;
export declare class AntelopePushTransactionError extends Error {
    code: number;
    message: string;
    error: {
        code: number;
        name: string;
        what: string;
        details: [
            {
                message: string;
                file: string;
                line_number: number;
                method: string;
            }
        ];
    };
    actions?: ActionData[];
    contract?: Name;
    constructor(err: AntelopePushTransactionErrorConstructor);
    hasErrorCode(code: number): boolean;
    hasTonomyErrorCode(code: string): boolean;
}
export declare function transact(contract: Name, actions: ActionData[], signer: Signer | Signer[]): Promise<API.v1.PushTransactionResponse>;
export {};
//# sourceMappingURL=transaction.d.ts.map