#import "INDIndigitallBridge.h"
#import "CDVIndigitall.h" // tu clase ObjC real (o la que corresponda)

@implementation INDIndigitallBridge

+ (CDVIndigitall *)buildImplFrom:(CDVPlugin *)plugin {
    CDVIndigitall *impl = [CDVIndigitall new];
    impl.commandDelegate = plugin.commandDelegate;
    impl.viewController  = plugin.viewController;
    return impl;
}

+ (void)initializeWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] initialize:command];
}

+ (void)deviceGetWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] deviceGet:command];
}

+ (void)deviceEnableWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] deviceEnable:command];
}

+ (void)deviceDisableWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] deviceDisable:command];
}

+ (void)topicsListWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] topicsList:command];
}

+ (void)topicsSubscribeWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] topicsSubscribe:command];
}

+ (void)topicsUnsubscribeWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] topicsUnsubscribe:command];
}

+ (void)setExternalCodeWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] setExternalCode:command];
}

+ (void)sendCustomEventWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] sendCustomEvent:command];
}

+ (void)packageNameWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] packageName:command];
}

+ (void)getPushWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] getPush:command];
}

+ (void)onIndigitallGetPushWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] onIndigitallGetPush:command];
}

+ (void)setDefaultViewUrlWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] setDefaultViewUrl:command];
}

+ (void)clearViewUrlWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] clearViewUrl:command];
}

+ (void)logInWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] logIn:command];
}

+ (void)logOutWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] logOut:command];
}

+ (void)requestPushPermissionsWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] requestPushPermissions:command];
}

+ (void)getPushPermissionStatusWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] getPushPermissionStatus:command];
}

+ (void)onMessageReceivedWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] onMessageReceived:command];
}

+ (void)getTokenWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] getToken:command];
}

+ (void)isIndigitallPushNotificationWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] isIndigitallPushNotification:command];
}

+ (void)isPushSecureWithPlugin:(CDVPlugin *)plugin command:(CDVInvokedUrlCommand *)command {
    [[self buildImplFrom:plugin] isPushSecure:command];
}

+ (void)sendNotificationWithPlugin:(CDVPlugin *)plugin userInfo:(NSDictionary*)userInfo {
    [[self buildImplFrom:plugin] sendNotification:userInfo];
}

+ (void)onHandleNotificationTapWithPlugin:(CDVPlugin *)plugin userInfo:(NSDictionary*)userInfo {
    [[self buildImplFrom:plugin] onHandleNotificationTap:userInfo];
}

+ (void)sendTokenWithPlugin:(CDVPlugin *)plugin token:(NSData*)token {
    [[self buildImplFrom:plugin] sendToken:token];
}
@end
