import { KeyringStatus } from "../../../reducers/keyring.reducer";
export declare enum SwCommnadTypes {
    SwCommandLockAccountRequest = 0,
    SwCommandExportPrivateKeyRequest = 1,
    SwCommandExportPrivateKeyResponse = 2,
    SwCommandExportSeedRequest = 3,
    SwCommandExportSeedResponse = 4,
    SwCommandSuccessResponse = 5,
    SwCommandErrorResponse = 6,
    SwCommandSignMessageRequest = 7,
    SwCommandSignMessageResponse = 8,
    SwCommandUnlockAccountRequest = 9,
    SwCommandStatusRequest = 10,
    SwCommandStatusRequestResponse = 11,
    SwCommandCreateNewAccountRequest = 12,
    SwCommandCreateNewAccountResponse = 13,
    SwCommandChangePasswordOnAccountRequest = 14,
    SwCommandChangePasswordOnAccountResponse = 15,
    SwCommandUnlockAccountFailedResponse = 16
}
export declare type SwCommandContext = {
    unlockAccount: (password: string) => Promise<KeyringStatus>;
    setStatus: (status: KeyringStatus) => void;
    getStatus: () => KeyringStatus;
    init: (encVault: string) => boolean;
    createAccount: (password: string) => Promise<{
        encryptedVault: string;
        publicKey: string;
    }>;
    restoreAccount: (password: string, seed: string) => Promise<{
        encryptedVault: string;
        publicKey: string;
    }>;
    processRequest: (command: SwCommand) => Promise<SwCommandResponse>;
    getKeyringController: () => any;
};
export declare type Signature = {
    signature: string;
    r: string;
    s: string;
    value: string;
    v_decimal: number;
};
declare abstract class SwCommand {
    type: SwCommnadTypes;
    constructor(type: SwCommnadTypes, obj?: SwCommand);
    abstract execute(context?: SwCommandContext): Promise<any>;
}
export declare abstract class SwCommandRequest extends SwCommand {
    constructor(type: SwCommnadTypes, obj?: SwCommand);
    abstract execute(context: SwCommandContext): Promise<SwCommandResponse>;
}
export declare abstract class SwCommandResponse extends SwCommand {
    constructor(type: SwCommnadTypes, obj?: SwCommand);
    abstract execute(): Promise<any>;
}
export default SwCommand;
//# sourceMappingURL=index.d.ts.map