declare namespace PULLIN {
    type OGPParamsProps = {
        marketingGoal: string,
        bidMode: string;
        siteSet: string[];
        automaticSiteEnabled: boolean,
        marketingTargetType?: string,
        marketingCarrierType?: string,
        marketingSubGoal?: string
    }
    interface AdReactContent {
        form: FormInstance<any>
        OGPParams: OGPParamsProps,
        setOGPparams: React.Dispatch<React.SetStateAction<OGPParamsProps>>
        smartDeliveryGoalRules: SmartDeliveryGoalOption[]
        setSmartDeliveryGoalRules: React.Dispatch<React.SetStateAction<SmartDeliveryGoalOption[]>>
        putInType?: 'NOVEL' | 'GAME'
    }
    interface AddeliveryProps {
        adgroups: any,
        targeting: any[],
        dynamic: any,
        dynamicMaterialDTos: any
        dynamicCreativesTextDTOS: any,
        mediaType: 0 | 1 | 2 | 3
    }
    interface DispatchAddelivery {
        addelivery: AddeliveryProps,
        setAddelivery: React.Dispatch<React.SetStateAction<AddeliveryProps>>
        accountCreateLogs: AccountCreateLogsProps[]
        setAccountCreateLogs: React.Dispatch<React.SetStateAction<AccountCreateLogsProps[]>>
        materialData: any
        setMaterialData: React.Dispatch<any>
        textData: any,
        setTextData: React.Dispatch<any>,
        clearData: () => void,
        putInType?: 'NOVEL' | 'GAME',
        // 是否可以选择云端素材
        isSelectRemote?: boolean,
        adLength: number
        isDqSubmit?: boolean
        setIsDqSubmit?: React.Dispatch<React.SetStateAction<boolean>>
        targetRules?: PULLIN.TargetingRulesProps | undefined
        setTargetRules?: React.Dispatch<React.SetStateAction<PULLIN.TargetingRulesProps | undefined>>
    }
    type DataType = { label: string | number, value: any, disabled?: boolean, desc?: string }
    interface FormItemDataProps {
        data: { label: string, value: string, icon: string, iconSelected: string }[]
        id?: any
        value?: string,
        onChange?: (value?: string) => void
    }
    interface FormItemDataNewProps<T = any> {
        data: DataType[]
        id?: any,
        value?: T,
        onChange?: (value?: T) => void
    }
    interface FormItemDataArrayProps {
        id?: number,
        value?: string[],
        onChange?: (value?: string[]) => void
    }
    interface FormItemDataNew2Props {
        data: AdcreativeTemplateList[]
        id?: any,
        value?: any,
        onChange?: (value?: any) => void
    }
    interface GetTargeting {
        pageNum: number,
        pageSize: number,
        accountId?: number,
        targetingName?: string,
        taskType?: 'NOVEL' | 'GAME',
        min?: string,
        max?: string,
    }
    interface AccountCreateLogsProps {
        accountId: number,
        userActionSetsList?: any[],
        productList?: any[],
        wechatChannelList?: any[],
        conversionList?: any,
        customAudienceList?: any,
        excludedCustomAudienceList?: any,
        pageList?: any,
        coldStartAudienceList?: any[],
        newConversionList?: any[],
        videoChannelList?: any[]
        unionPositionPackage?: any[]
        excludeUnionPositionPackage?: any[],
        customAudience?: any[],
        excludedCustomAudience?: any[]
    }
    interface DynamicReactContent {
        form: FormInstance<any>
        value: any,
        adgroups: any,
        creativeComponents: any,
        setCreativeComponents: React.Dispatch<any>,
        isUpdate: boolean,
        setIsUpdate: React.Dispatch<React.SetStateAction<boolean>>
    }
    interface AdcreativeTemplateList {
        creativeSampleImage: string,
        creativeTemplateAppellation: string,
        creativeTemplateId: number,
        creativeTemplateStyle: string,
        isGeneral: boolean,
        siteSet: number,
        label: string | number,
        value: any,
        tooltip?: string,
        img?: string
    }
    interface GetTaskV3Props {
        pageNum: number,
        pageSize: number,
        taskName?: string,
        createTimeMin?: string,
        createTimeMax?: string
    }
    interface GetTaskV3LogProps {
        pageNum: number,
        pageSize: number,
        taskId?: string
    }
    interface GetDynamicV3LogProps {
        pageNum: number,
        pageSize: number,
        adgroupCreateLogId?: string
    }
    type TextDtoProps = {
        label: string,
        value: string,
        required: boolean,
        restriction: {
            textRestriction: {
                minLength: number,
                maxLength: number,
                textPattern: string
            }
        }
        arrayProperty: {
            maxNumber: number
            minNumber: number
        }
    }
    /**
     * 当前广告新增创意
     */
    type NewAddDynamic = {
        adData: any[],
        putInType?: 'NOVEL' | 'GAME'
        visible?: boolean,
        tactics?: any,
        onClose?: () => void,
        onChange?: () => void
    }
    // 策略组
    type AddV3StrategyProps = {
        type: string,
        strategyKey: string,
        strategyValue: string,
        remark?: string
        putInType?: 'NOVEL' | 'GAME'
    }
    type GetV3StrategyListProps = {
        pageNum: number,
        pageSize: number,
        strategyKey?: string,
        type?: string,
        putInType?: 'NOVEL' | 'GAME'
    }
    interface FormProps<T = any> {
        value?: T,
        onChange?: (value?: T) => void
    }
    type SmartDeliveryGoalSpecProps = {
        field_name: string;
        title: string;
        display_component: string;
        placeholder: string;
        min: number;
        max: number;
        decimal_length: number;
        required: boolean;
        decimal_mkt_length?: number;
        unitTips?: string;
    }
    type SmartDeliveryGoalOption = {
        value: string;
        optimization_goal_combos: Array<{
            optimization_goal: string;
            deep_worth_optimization_goal?: string;
            title: string;
        }>;
        smart_delivery_goal_spec_name: string;
        parameter_definitions: {
            smart_delivery_goal_spec: Array<SmartDeliveryGoalSpecProps>;
        };
    };
    type TargetingRulesProps = {
        desc: string,
        rules: string[]
    }
}