@rokt/dcui-orchestrator 1.2.1-rc.3 → 1.2.1-rc.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/index.cjs +43 -37
  2. package/dist/index.js +54 -48
  3. package/dist/libraries/dcui-components/src/components/data-mapper/data-mapper.d.ts +4 -0
  4. package/dist/libraries/dcui-components/src/components/index.d.ts +1 -0
  5. package/dist/libraries/dcui-components/src/components/paypal-button/index.d.ts +1 -0
  6. package/dist/libraries/dcui-components/src/components/paypal-button/paypal-button.d.ts +78 -0
  7. package/dist/libraries/dcui-components/src/components/paypal-button/paypal-wordmark.d.ts +8 -0
  8. package/dist/libraries/dcui-components/src/contexts/data-mapper-context.d.ts +4 -0
  9. package/dist/libraries/dcui-components/src/contexts/index.d.ts +1 -0
  10. package/dist/libraries/dcui-components/src/contexts/lead-capture-offer-context.d.ts +5 -0
  11. package/dist/libraries/dcui-components/src/contexts/validators/validator-provider.d.ts +5 -3
  12. package/dist/libraries/dcui-components/src/failure-codes.d.ts +1 -0
  13. package/dist/libraries/domain/src/behaviors/continuous-child.d.ts +59 -0
  14. package/dist/libraries/domain/src/behaviors/custom-states.d.ts +1 -1
  15. package/dist/libraries/domain/src/behaviors/index.d.ts +1 -0
  16. package/dist/libraries/domain/src/behaviors/offer-engagement.d.ts +11 -0
  17. package/dist/libraries/domain/src/behaviors/send-partner.d.ts +14 -2
  18. package/dist/libraries/domain/src/behaviors/trigger-action.d.ts +3 -3
  19. package/dist/libraries/domain/src/models/child-layout-response.d.ts +4 -0
  20. package/dist/libraries/domain/src/models/index.d.ts +1 -0
  21. package/dist/libraries/domain/src/models/layout/layout-offer.d.ts +2 -0
  22. package/dist/libraries/domain/src/models/partner-event.d.ts +1 -1
  23. package/dist/libraries/domain/src/models/plugin/plugin-child-layout-model.d.ts +1 -0
  24. package/dist/libraries/domain/src/models/plugin/plugin-offer.d.ts +2 -0
  25. package/dist/libraries/layout-renderer-utils/src/actions/attributes.d.ts +7 -0
  26. package/dist/libraries/layout-renderer-utils/src/actions/index.d.ts +4 -1
  27. package/dist/libraries/layout-renderer-utils/src/models/state/attributes.d.ts +2 -0
  28. package/dist/libraries/layout-renderer-utils/src/models/state/index.d.ts +3 -0
  29. package/dist/libraries/layout-renderer-utils/src/reducers/attributes/index.d.ts +1 -0
  30. package/dist/libraries/layout-renderer-utils/src/reducers/attributes/reducer.d.ts +4 -0
  31. package/dist/libraries/layout-renderer-utils/src/reducers/index.d.ts +3 -0
  32. package/dist/libraries/layout-renderer-utils/src/sagas/plugin/channels.d.ts +3 -3
  33. package/dist/libraries/layout-renderer-utils/src/sagas/plugin/display.d.ts +3 -0
  34. package/dist/libraries/layout-renderer-utils/src/sagas/plugin/sagas.d.ts +5 -2
  35. package/dist/libraries/module-connector/src/main.d.ts +1 -1
  36. package/dist/libraries/module-connector/src/models/gateway.d.ts +14 -3
  37. package/dist/libraries/module-utils/src/sagas/child-layouts/sagas.d.ts +2 -0
  38. package/dist/libraries/orchestrator/src/actions/index.d.ts +1 -0
  39. package/dist/libraries/orchestrator/src/reducers/index.d.ts +1 -0
  40. package/dist/libraries/orchestrator/src/sagas/child-layouts/continuous-child-host.d.ts +15 -0
  41. package/dist/libraries/orchestrator/src/sagas/child-layouts/continuous-child.d.ts +52 -0
  42. package/dist/libraries/orchestrator/src/sagas/index.d.ts +1 -1
  43. package/dist/libraries/plugin-utils/src/plugin-service/attributes.d.ts +7 -0
  44. package/dist/libraries/plugin-utils/src/plugin-service/display.d.ts +1 -0
  45. package/dist/libraries/plugin-utils/src/plugin-service/index.d.ts +3 -1
  46. package/dist/modules/instant-purchase/src/actions/catalog-selection.d.ts +8 -1
  47. package/dist/modules/instant-purchase/src/actions/instant-purchase.d.ts +4 -0
  48. package/dist/modules/instant-purchase/src/components/catalog-device-pay-button/catalog-device-pay-button.d.ts +8 -0
  49. package/dist/modules/instant-purchase/src/components/catalog-selectors-stacked/catalog-selectors-stacked.d.ts +30 -0
  50. package/dist/modules/instant-purchase/src/models/state/device-pay-availability.d.ts +1 -0
  51. package/dist/modules/instant-purchase/src/models/state/instant-purchase.d.ts +4 -0
  52. package/dist/modules/instant-purchase/src/reducers/catalog-selection/reducer.d.ts +2 -0
  53. package/dist/modules/instant-purchase/src/reducers/index.d.ts +3 -0
  54. package/dist/modules/instant-purchase/src/sagas/instant-purchase/sagas.d.ts +17 -3
  55. package/dist/modules/instant-purchase/src/sagas/paypal/sagas.d.ts +2 -0
  56. package/dist/modules/instant-purchase/src/sagas/tax-and-shipping/sagas.d.ts +10 -20
  57. package/dist/modules/instant-purchase/src/selectors/device-pay-availability/selectors.d.ts +1 -0
  58. package/dist/modules/instant-purchase/src/selectors/tax-and-shipping/selectors.d.ts +8 -0
  59. package/dist/modules/instant-purchase/src/utils/create-tax-and-shipping-cache-key.d.ts +4 -0
  60. package/dist/modules/instant-purchase/src/utils/parse-non-negative-monetary-amount.d.ts +1 -0
  61. package/dist/modules/instant-purchase/src/utils/requires-tax-and-shipping-initialization.d.ts +2 -0
  62. package/dist/modules/standard-marketing/src/sagas/offer-engagement/sagas.d.ts +2 -1
  63. package/node_modules/@rokt/dcui-layout-schema/dist/schema.d.ts +490 -18
  64. package/node_modules/@rokt/dcui-layout-schema/dist/tsconfig.tsbuildinfo +1 -1
  65. package/node_modules/@rokt/dcui-layout-schema/package.json +1 -1
  66. package/node_modules/@rokt/dcui-layout-schema/v1.21/index.d.ts +7105 -0
  67. package/node_modules/@rokt/dcui-layout-schema/v1.21/index.js +4 -0
  68. package/node_modules/@rokt/dcui-layout-schema/v1.22/index.d.ts +7121 -0
  69. package/node_modules/@rokt/dcui-layout-schema/v1.22/index.js +4 -0
  70. package/node_modules/@rokt/dcui-layout-schema/v1.23/index.d.ts +7126 -0
  71. package/node_modules/@rokt/dcui-layout-schema/v1.23/index.js +4 -0
  72. package/node_modules/@rokt/dcui-layout-schema/v1.24/index.d.ts +7492 -0
  73. package/node_modules/@rokt/dcui-layout-schema/v1.24/index.js +4 -0
  74. package/node_modules/@rokt/dcui-layout-schema/v1.25/index.d.ts +7510 -0
  75. package/node_modules/@rokt/dcui-layout-schema/v1.25/index.js +4 -0
  76. package/node_modules/@rokt/dcui-layout-schema/v1.26/index.d.ts +7516 -0
  77. package/node_modules/@rokt/dcui-layout-schema/v1.26/index.js +4 -0
  78. package/package.json +2 -2
@@ -5,9 +5,13 @@ export type DataObject = {
5
5
  export type StateOnlyObject = {
6
6
  state: object;
7
7
  };
8
+ export type AttributeOnlyObject = {
9
+ attribute: object;
10
+ };
8
11
  export type ExtendableDataMapper = ReturnType<typeof createDataMapper>;
9
12
  export declare function createDataMapper(data: object, namespace?: string): {
10
13
  (template: string): string;
11
14
  (stateObj: StateOnlyObject, namespace?: string): /*elided*/ any;
15
+ (attributeObj: AttributeOnlyObject, namespace?: string): /*elided*/ any;
12
16
  (dataObj: DataObject, namespace: string): /*elided*/ any;
13
17
  };
@@ -31,3 +31,4 @@ export * from './form';
31
31
  export * from './text-input';
32
32
  export * from './action-button';
33
33
  export * from './apple-pay-button';
34
+ export * from './paypal-button';
@@ -0,0 +1 @@
1
+ export * from './paypal-button';
@@ -0,0 +1,78 @@
1
+ import React from 'react';
2
+ import type { ThemeColor } from '@rokt/dcui-layout-schema';
3
+ /**
4
+ * Renders a PayPal-branded button whose look is fixed to the options in
5
+ * PayPal's button style guide (colors, shapes, height range), the same way
6
+ * ApplePayButton only offers Apple's styles. Layout styles can pick between
7
+ * those options but cannot restyle the brand.
8
+ * @see https://developer.paypal.com/docs/multiparty/checkout/standard/customize/buttons-style-guide/
9
+ */
10
+ export type PayPalButtonColor = 'gold' | 'blue' | 'silver' | 'white' | 'black';
11
+ export type PayPalButtonStyle = {
12
+ color: {
13
+ light: PayPalButtonColor;
14
+ dark?: PayPalButtonColor;
15
+ };
16
+ };
17
+ export declare const PAYPAL_BUTTON_MIN_HEIGHT = 25;
18
+ export declare const PAYPAL_BUTTON_MAX_HEIGHT = 55;
19
+ export declare const PAYPAL_BUTTON_DEFAULT_HEIGHT = 45;
20
+ export declare const PAYPAL_BUTTON_DEFAULT_RADIUS = 4;
21
+ /**
22
+ * Base `own` styles to merge under the layout's own styles (with
23
+ * mergeStylesWithDefaults), so the defaults sit in the normal style cascade:
24
+ * layout breakpoints, pseudo-states and conditional transitions override them
25
+ * only where they apply.
26
+ */
27
+ export declare const PAYPAL_BUTTON_DEFAULT_OWN_STYLES: {
28
+ readonly dimension: {
29
+ readonly height: {
30
+ readonly type: "fixed";
31
+ readonly value: 45;
32
+ };
33
+ };
34
+ readonly border: {
35
+ readonly borderRadius: 4;
36
+ };
37
+ };
38
+ /**
39
+ * Structural shape of the `own` style hints this module reads, declared
40
+ * structurally so any schema node with `own` styles can pass itself.
41
+ */
42
+ export type PayPalButtonStyleSource = {
43
+ styles?: {
44
+ elements?: {
45
+ own?: ReadonlyArray<{
46
+ default?: {
47
+ background?: {
48
+ backgroundColor?: ThemeColor | null;
49
+ } | null;
50
+ } | null;
51
+ } | null> | null;
52
+ } | null;
53
+ } | null;
54
+ };
55
+ /**
56
+ * Derives the PayPal button color from the schema's `own` default styles.
57
+ * The background color picks gold, blue, silver, white or black by exact PayPal
58
+ * hex (#RGB, #RRGGBB, or alpha-first #ARGB / #AARRGGBB when fully opaque);
59
+ * anything else falls back to gold, PayPal's recommended color. A `dark` value
60
+ * applies in dark mode. Colors are brand-locked, so breakpoint blocks merge
61
+ * with last-non-null-wins, as for Apple Pay.
62
+ *
63
+ * Height and border radius are not derived: they stay in the layout's own
64
+ * class, merged over PAYPAL_BUTTON_DEFAULT_OWN_STYLES, and PayPalButton only
65
+ * bounds the height to PayPal's 25-55px range.
66
+ */
67
+ export declare function derivePayPalButtonStyle(schema: PayPalButtonStyleSource): PayPalButtonStyle;
68
+ type PayPalButtonProps = {
69
+ buttonStyle?: PayPalButtonStyle;
70
+ ariaLabel?: string;
71
+ className?: string;
72
+ disabled?: boolean;
73
+ onClick?: React.MouseEventHandler<HTMLButtonElement>;
74
+ tabIndex?: number;
75
+ testId?: string;
76
+ };
77
+ export declare const PayPalButton: React.ForwardRefExoticComponent<PayPalButtonProps & React.RefAttributes<HTMLButtonElement>>;
78
+ export {};
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ /**
3
+ * PLACEHOLDER wordmark. Replace with the official PayPal wordmark SVG from
4
+ * PayPal's Logo and Marks resources once PayPal confirms the asset for this
5
+ * integration. Keep the two fills driven by the CSS variables below so the
6
+ * blue (light buttons) and white (dark buttons) variants keep working.
7
+ */
8
+ export declare function PayPalWordmark(): React.JSX.Element;
@@ -1,20 +1,24 @@
1
1
  export declare const DataMapperContext: import("react").Context<{
2
2
  (template: string): string;
3
3
  (stateObj: import("..").StateOnlyObject, namespace?: string): /*elided*/ any;
4
+ (attributeObj: import("..").AttributeOnlyObject, namespace?: string): /*elided*/ any;
4
5
  (dataObj: import("..").DataObject, namespace: string): /*elided*/ any;
5
6
  }>;
6
7
  export declare const DataMapperConsumer: import("react").Consumer<{
7
8
  (template: string): string;
8
9
  (stateObj: import("..").StateOnlyObject, namespace?: string): /*elided*/ any;
10
+ (attributeObj: import("..").AttributeOnlyObject, namespace?: string): /*elided*/ any;
9
11
  (dataObj: import("..").DataObject, namespace: string): /*elided*/ any;
10
12
  }>;
11
13
  export declare const DataMapperProvider: import("react").Provider<{
12
14
  (template: string): string;
13
15
  (stateObj: import("..").StateOnlyObject, namespace?: string): /*elided*/ any;
16
+ (attributeObj: import("..").AttributeOnlyObject, namespace?: string): /*elided*/ any;
14
17
  (dataObj: import("..").DataObject, namespace: string): /*elided*/ any;
15
18
  }>;
16
19
  export declare const useDataMapper: () => {
17
20
  (template: string): string;
18
21
  (stateObj: import("..").StateOnlyObject, namespace?: string): /*elided*/ any;
22
+ (attributeObj: import("..").AttributeOnlyObject, namespace?: string): /*elided*/ any;
19
23
  (dataObj: import("..").DataObject, namespace: string): /*elided*/ any;
20
24
  };
@@ -3,6 +3,7 @@ export * from './global-state-context';
3
3
  export * from './node-mapper-context';
4
4
  export * from './root-element-context';
5
5
  export * from './offer-data-context';
6
+ export * from './lead-capture-offer-context';
6
7
  export * from './data-mapper-context';
7
8
  export * from './scoped-style-mapper-context';
8
9
  export * from './layout-schema-type-context';
@@ -0,0 +1,5 @@
1
+ import { PluginOffer } from '../../../domain/src/models';
2
+ /** Resolves the offer whose referral response a lead form belongs to. */
3
+ export type LeadCaptureOfferResolver = (offerPositionIndex?: number) => PluginOffer | undefined;
4
+ export declare const LeadCaptureOfferContext: import("react").Context<LeadCaptureOfferResolver>;
5
+ export declare const useLeadCaptureOffer: () => LeadCaptureOfferResolver;
@@ -1,14 +1,16 @@
1
- import { ReactNode } from 'react';
1
+ import { ReactNode, RefObject } from 'react';
2
2
  export type Validator = () => boolean;
3
3
  export interface ValidatorFieldData {
4
4
  validators: Validator[];
5
5
  isValid: boolean;
6
+ element?: HTMLElement;
6
7
  }
7
8
  export type ValidatorMap = Record<string, ValidatorFieldData>;
8
9
  export interface ValidatorContextType {
9
- registerValidators: (validatorFieldKey: string, validators: Validator[]) => void;
10
+ registerValidators: (validatorFieldKey: string, validators: Validator[], element?: HTMLElement) => void;
10
11
  validateFieldKeys: (validatorFieldKey: string[]) => boolean;
11
12
  getFieldKeyValidity: (validatorFieldKey: string) => boolean;
13
+ focusFirstInvalidField?: () => void;
12
14
  }
13
15
  export declare const ValidatorContext: import("react").Context<ValidatorContextType | null>;
14
16
  /**
@@ -21,4 +23,4 @@ export declare function ValidatorProvider(props: {
21
23
  children: ReactNode;
22
24
  }): import("react").JSX.Element;
23
25
  export declare function useValidator(): ValidatorContextType;
24
- export declare function useRegisterValidators(validationFieldKey: string | undefined, validators: Validator[]): void;
26
+ export declare function useRegisterValidators(validationFieldKey: string | undefined, validators: Validator[], targetRef?: RefObject<HTMLElement | null>): void;
@@ -5,3 +5,4 @@ export declare const FAILED_TEMPLATING_DATA = "FAILED_TEMPLATING_DATA";
5
5
  export declare const FAILED_TO_MAP_STATIC_DATA = "FAILED_TO_MAP_STATIC_DATA";
6
6
  export declare const FAILED_SANITISING_HTML = "FAILED_SANITISING_HTML";
7
7
  export declare const UNRESOLVED_FORM_VALIDATION_TARGET = "UNRESOLVED_FORM_VALIDATION_TARGET";
8
+ export declare const MISSING_LEAD_IDENTITY = "MISSING_LEAD_IDENTITY";
@@ -0,0 +1,59 @@
1
+ import { LinkOpenTarget } from '@rokt/dcui-layout-schema';
2
+ import { PluginChildLayoutModel } from '../models';
3
+ /** Deliberately off until measurement and the SDK persistence proof are approved. */
4
+ export declare const CONTINUOUS_CHILD_CAPABILITY_ENABLED = false;
5
+ export declare const CONTINUOUS_CHILD_VERSION = 1;
6
+ export declare const CONTINUOUS_CHILD_EVENTS: {
7
+ readonly READY: "CONTINUOUS_CHILD/READY";
8
+ readonly PRESENTATION: "CONTINUOUS_CHILD/PRESENTATION";
9
+ readonly APPLIED: "CONTINUOUS_CHILD/APPLIED";
10
+ readonly REQUEST: "CONTINUOUS_CHILD/REQUEST";
11
+ readonly EXPOSURE: "CONTINUOUS_CHILD/EXPOSURE";
12
+ };
13
+ /** Temporary additive types until the stable schema package is published. */
14
+ export type ContinuousChildSchema = PluginChildLayoutModel['childLayoutSchema'] & {
15
+ continuationKey?: string | null;
16
+ ownsViewability?: boolean | null;
17
+ };
18
+ export interface ContinuousIdentity {
19
+ sessionId: string;
20
+ revision: number;
21
+ position: number;
22
+ creativeInstanceGuid: string;
23
+ childInstanceGuid: string;
24
+ }
25
+ export interface ContinuousPresentationInput {
26
+ config: PluginChildLayoutModel;
27
+ position: number;
28
+ ownsViewability: boolean;
29
+ }
30
+ export interface ContinuousPresentation extends ContinuousPresentationInput {
31
+ identity: ContinuousIdentity;
32
+ totalCount: number;
33
+ }
34
+ export interface ContinuousRequest {
35
+ identity: ContinuousIdentity;
36
+ actionId: string;
37
+ openLinks?: LinkOpenTarget;
38
+ action: 'next' | 'previous' | 'positive' | 'negative' | 'close';
39
+ }
40
+ export interface ContinuousExposure {
41
+ identity: ContinuousIdentity;
42
+ kind: 'rendered' | 'qualified';
43
+ inferred: boolean;
44
+ supportedByBrowser: boolean;
45
+ }
46
+ export declare const continuousEnvelope: <T>(payload: T) => {
47
+ version: number;
48
+ payload: T;
49
+ };
50
+ export declare function isContinuousEnvelope(value: unknown): value is {
51
+ version: 1;
52
+ payload: unknown;
53
+ };
54
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
55
+ export declare function isContinuousIdentity(value: unknown): value is ContinuousIdentity;
56
+ export declare function sameContinuousIdentity(a: ContinuousIdentity, b: ContinuousIdentity): boolean;
57
+ export declare function isContinuousRequest(value: unknown): value is ContinuousRequest;
58
+ export declare function isContinuousExposure(value: unknown): value is ContinuousExposure;
59
+ export declare function isContinuousPresentation(value: unknown): value is ContinuousPresentation;
@@ -17,7 +17,7 @@ export declare function isValidSetCustomStatePayload(payload: unknown): payload
17
17
  export declare const DEVICE_PAY_PROCESSING_STATE_KEY = "ProcessingState";
18
18
  export declare const DEVICE_PAY_PROCESSING_IDLE = 0;
19
19
  export declare const DEVICE_PAY_PROCESSING_IN_FLIGHT = 1;
20
- export declare const DEVICE_PAY_AVAILABILITY_KEYS: readonly ["applePay", "afterpay"];
20
+ export declare const DEVICE_PAY_AVAILABILITY_KEYS: readonly ["applePay", "afterpay", "paypal"];
21
21
  export type DevicePayProviderKey = (typeof DEVICE_PAY_AVAILABILITY_KEYS)[number];
22
22
  export declare const DEVICE_PAY_APPLE_PAY_AVAILABLE_STATE_KEY = "applePayAvailable";
23
23
  export declare const DEVICE_PAY_ERROR_STATE_KEY = "DevicePayErrorState";
@@ -18,3 +18,4 @@ export * from './dismiss-overlay';
18
18
  export * from './trigger-action';
19
19
  export * from './form-state';
20
20
  export * from './report-error';
21
+ export * from './continuous-child';
@@ -14,10 +14,12 @@ export interface OfferEngagementFulfillmentPayload {
14
14
  fulfillment: Fulfillment;
15
15
  accountID: string;
16
16
  referralCreativeID?: string;
17
+ adID?: string;
17
18
  }
18
19
  export interface OfferEngagementUrlPayload extends PluginCreativeUrlResponseOption {
19
20
  accountID: string;
20
21
  referralCreativeID?: string;
22
+ adID?: string;
21
23
  creativeInstanceGuid?: string;
22
24
  }
23
25
  export interface OfferEngagementProductItemResponsePayload extends OfferEngagementUrlPayload {
@@ -44,6 +46,15 @@ export declare function isRealTimeReferralOnly(response: OfferEngagementPayload
44
46
  })): response is OfferEngagementPayload & {
45
47
  accountID: string;
46
48
  referralCreativeID: string;
49
+ adID?: string;
50
+ };
51
+ /**
52
+ * `adID` is the key the Web SDK's realtime-conversion-promotion extension reads.
53
+ * Anything but a non-empty string yields no key, so a payload or event without
54
+ * an ad id keeps exactly the keys it had before.
55
+ */
56
+ export declare function adIDField(adID: string | undefined): {
57
+ adID?: string;
47
58
  };
48
59
  export declare function makeCaptureOnlyOfferEngagementPayload(offerPayload?: Partial<OfferEngagementCaptureOnlyPayload>): OfferEngagementCaptureOnlyPayload;
49
60
  export declare function makeUrlOfferEngagementPayload(offerPayload?: Partial<OfferEngagementUrlPayload>): OfferEngagementUrlPayload;
@@ -14,6 +14,7 @@ export type OutboundRealtimeOfferFulfillmentReferralEventPayload = {
14
14
  rclid: string;
15
15
  accountID: string;
16
16
  referralCreativeID: string;
17
+ adID?: string;
17
18
  referralOnly?: boolean;
18
19
  rewardHandoff?: boolean;
19
20
  };
@@ -24,6 +25,7 @@ export type OutboundRealtimeOfferFulfillmentConversionEventPayload = {
24
25
  rclid: string;
25
26
  accountID: string;
26
27
  referralCreativeID: string;
28
+ adID?: string;
27
29
  rewardHandoff?: boolean;
28
30
  };
29
31
  };
@@ -80,10 +82,20 @@ export type OutboundAbortDevicePayEventPayload = {
80
82
  export type OutboundCompleteDevicePayEventPayload = {
81
83
  name: 'COMPLETE_DEVICE_PAY_EVENT';
82
84
  };
83
- export type OutboundPartnerEventPayload<EventType extends OutboundPartnerEvent> = EventType extends 'REALTIME_OFFER_FULFILLMENT_REFERRAL' ? OutboundRealtimeOfferFulfillmentReferralEventPayload : EventType extends 'REALTIME_OFFER_FULFILLMENT_CONVERSION' ? OutboundRealtimeOfferFulfillmentConversionEventPayload : EventType extends 'REALTIME_OFFER_FULFILLMENT_SUCCESS' ? OutboundRealtimeOfferFulfillmentSuccessEventPayload : EventType extends 'V2_CART_ITEM_UPDATED' | 'UPDATE_CART_ITEM_MESSAGE' | 'CART_ITEM_INSTANT_PURCHASE' | 'UPSELL_ITEM_INSTANT_PURCHASE' | 'UPSELL_CREATIVE_SENT' | 'INITIATE_INSTANT_PURCHASE_EVENT' | 'INSTANT_PURCHASE_INITIATE_TAX_AND_SHIPPING_EVENT' | 'INITIATE_CART_ITEM_EVENT' | 'DELIVERY_DETAILS_SENT' | 'PREPARE_DEVICE_PAY_EVENT' | 'INITIATE_DEVICE_PAY_EVENT' | 'ABORT_DEVICE_PAY_EVENT' | 'COMPLETE_DEVICE_PAY_EVENT' ? never : {
85
+ export type OutboundLeadCaptureSubmittedEventPayload = {
86
+ name: 'LEAD_CAPTURE_SUBMITTED';
87
+ body: {
88
+ email?: string;
89
+ mobile_number?: string;
90
+ rclid?: string;
91
+ accountID?: string;
92
+ referralCreativeID?: string;
93
+ };
94
+ };
95
+ export type OutboundPartnerEventPayload<EventType extends OutboundPartnerEvent> = EventType extends 'LEAD_CAPTURE_SUBMITTED' ? OutboundLeadCaptureSubmittedEventPayload : EventType extends 'REALTIME_OFFER_FULFILLMENT_REFERRAL' ? OutboundRealtimeOfferFulfillmentReferralEventPayload : EventType extends 'REALTIME_OFFER_FULFILLMENT_CONVERSION' ? OutboundRealtimeOfferFulfillmentConversionEventPayload : EventType extends 'REALTIME_OFFER_FULFILLMENT_SUCCESS' ? OutboundRealtimeOfferFulfillmentSuccessEventPayload : EventType extends 'V2_CART_ITEM_UPDATED' | 'UPDATE_CART_ITEM_MESSAGE' | 'CART_ITEM_INSTANT_PURCHASE' | 'UPSELL_ITEM_INSTANT_PURCHASE' | 'UPSELL_CREATIVE_SENT' | 'INITIATE_INSTANT_PURCHASE_EVENT' | 'INSTANT_PURCHASE_INITIATE_TAX_AND_SHIPPING_EVENT' | 'INITIATE_CART_ITEM_EVENT' | 'DELIVERY_DETAILS_SENT' | 'PREPARE_DEVICE_PAY_EVENT' | 'INITIATE_DEVICE_PAY_EVENT' | 'ABORT_DEVICE_PAY_EVENT' | 'COMPLETE_DEVICE_PAY_EVENT' ? never : {
84
96
  name: EventType;
85
97
  };
86
98
  export type SendPartner<EventType extends OutboundPartnerEvent> = {
87
99
  type: typeof SEND_PARTNER;
88
- payload: OutboundPartnerEventPayload<EventType> | OutboundUpdateCartEventPayload | OutboundUpdateCartItemMessageEventPayload | OutboundInstantPurchaseEventPayload | OutboundUpsellItemInstantPurchaseEventPayload | OutboundUpsellCreativeSentEventPayload | OutboundInstantPurchaseWsdkEventPayload | OutboundInstantPurchaseTaxAndShippingEventPayload | OutboundCartItemEventPayload | OutboundDeliveryDetailsSentEventPayload | OutboundPrepareDevicePayEventPayload | OutboundDevicePayEventPayload | OutboundAbortDevicePayEventPayload | OutboundCompleteDevicePayEventPayload;
100
+ payload: OutboundPartnerEventPayload<EventType> | OutboundUpdateCartEventPayload | OutboundUpdateCartItemMessageEventPayload | OutboundInstantPurchaseEventPayload | OutboundUpsellItemInstantPurchaseEventPayload | OutboundUpsellCreativeSentEventPayload | OutboundInstantPurchaseWsdkEventPayload | OutboundInstantPurchaseTaxAndShippingEventPayload | OutboundCartItemEventPayload | OutboundDeliveryDetailsSentEventPayload | OutboundPrepareDevicePayEventPayload | OutboundDevicePayEventPayload | OutboundAbortDevicePayEventPayload | OutboundCompleteDevicePayEventPayload | OutboundLeadCaptureSubmittedEventPayload;
89
101
  };
@@ -1,14 +1,14 @@
1
- import { LayoutAction, LayoutVariantAction, OuterLayoutAction } from '@rokt/dcui-layout-schema';
1
+ import { ChildLayoutAction, LayoutAction, LayoutVariantAction, OuterLayoutAction } from '@rokt/dcui-layout-schema';
2
2
  import { PluginOffer } from '../models';
3
3
  export declare const TRIGGER_ACTION = "GLOBAL/TRIGGER_ACTION";
4
4
  /**
5
5
  * Actions a trigger (e.g. a layout timer or button) can carry. A trigger may
6
- * originate in any of the three layout contexts, so the channel accepts the
6
+ * originate in any of the four layout contexts, so the channel accepts the
7
7
  * union of all their action sets rather than assuming one stays a superset of
8
8
  * the others. This keeps producers in every context assignable even if the
9
9
  * sets diverge in future schema versions.
10
10
  */
11
- export type TriggerableAction = LayoutAction | OuterLayoutAction | LayoutVariantAction;
11
+ export type TriggerableAction = LayoutAction | OuterLayoutAction | LayoutVariantAction | ChildLayoutAction;
12
12
  export interface TriggerAction {
13
13
  type: typeof TRIGGER_ACTION;
14
14
  payload: {
@@ -0,0 +1,4 @@
1
+ import { PluginOffer } from './plugin/plugin-offer';
2
+ import { PluginCreativeUrlResponseOption } from './plugin/plugin-creative-response-option';
3
+ /** Child acceptance supports ordinary positive URLs, not deferred fulfillment. */
4
+ export declare function getChildPositiveResponse(offer: PluginOffer | null, responseKey: string): PluginCreativeUrlResponseOption | undefined;
@@ -14,3 +14,4 @@ export * from './interactivity';
14
14
  export * from './child-plugin';
15
15
  export * from './purchase';
16
16
  export * from './shipping';
17
+ export * from './child-layout-response';
@@ -4,6 +4,8 @@ import { LayoutTransactionData } from './layout-transaction-data';
4
4
  export interface LayoutOffer {
5
5
  campaignId: string;
6
6
  accountId: string;
7
+ /** The rendered ad's id; absent until the transactions API sends it. */
8
+ adId?: string;
7
9
  maxTotalItemsQtyInOffer: number;
8
10
  creative: LayoutCreative;
9
11
  metadata: Record<string, string>;
@@ -1,5 +1,5 @@
1
1
  export type CatalogOutboundPartnerEvent = 'V2_CART_ITEM_UPDATED' | 'UPDATE_CART_ITEM_MESSAGE' | 'CART_ITEM_INSTANT_PURCHASE' | 'UPSELL_ITEM_INSTANT_PURCHASE' | 'DELIVERY_DETAILS_SENT';
2
- export type OfferOutboundPartnerEvent = CatalogOutboundPartnerEvent | 'OFFER_ENGAGEMENT' | 'POSITIVE_ENGAGEMENT' | 'UPSELL_CREATIVE_SENT' | 'REALTIME_OFFER_FULFILLMENT_REFERRAL' | 'REALTIME_OFFER_FULFILLMENT_CONVERSION' | 'REALTIME_OFFER_FULFILLMENT_SUCCESS' | 'INITIATE_INSTANT_PURCHASE_EVENT' | 'INSTANT_PURCHASE_INITIATE_TAX_AND_SHIPPING_EVENT' | 'INITIATE_CART_ITEM_EVENT' | 'PREPARE_DEVICE_PAY_EVENT' | 'INITIATE_DEVICE_PAY_EVENT' | 'ABORT_DEVICE_PAY_EVENT' | 'COMPLETE_DEVICE_PAY_EVENT';
2
+ export type OfferOutboundPartnerEvent = CatalogOutboundPartnerEvent | 'OFFER_ENGAGEMENT' | 'POSITIVE_ENGAGEMENT' | 'UPSELL_CREATIVE_SENT' | 'REALTIME_OFFER_FULFILLMENT_REFERRAL' | 'REALTIME_OFFER_FULFILLMENT_CONVERSION' | 'REALTIME_OFFER_FULFILLMENT_SUCCESS' | 'INITIATE_INSTANT_PURCHASE_EVENT' | 'INSTANT_PURCHASE_INITIATE_TAX_AND_SHIPPING_EVENT' | 'INITIATE_CART_ITEM_EVENT' | 'PREPARE_DEVICE_PAY_EVENT' | 'INITIATE_DEVICE_PAY_EVENT' | 'ABORT_DEVICE_PAY_EVENT' | 'COMPLETE_DEVICE_PAY_EVENT' | 'LEAD_CAPTURE_SUBMITTED';
3
3
  export type OutboundPartnerEvent = OfferOutboundPartnerEvent | 'PLACEMENT_CLOSED' | 'PLACEMENT_COMPLETED' | 'PLACEMENT_INTERACTIVE' | 'PLACEMENT_FAILURE';
4
4
  export declare function isOutboundPartnerEvent(value: unknown): value is OutboundPartnerEvent;
5
5
  export declare function isOfferOutboundPartnerEvent(value: unknown): value is OfferOutboundPartnerEvent;
@@ -3,6 +3,7 @@ import { Fonts } from '@rokt/plugin';
3
3
  import { SyncedGlobalState } from '../global-state';
4
4
  import { PluginOffer } from './plugin-offer';
5
5
  export interface PluginChildLayoutModel<ChildRootLayoutSchema = ChildRootSchemaModel<LayoutSchemaModel, LayoutDisplayPreset, LayoutSettings, WhenPredicate>> {
6
+ continuousPresentation?: import('../../behaviors/continuous-child').ContinuousIdentity;
6
7
  instanceGuid: string;
7
8
  childLayoutId: string;
8
9
  layoutSchemaVersion: string;
@@ -5,6 +5,8 @@ import { TransactionData } from './plugin-transaction-data';
5
5
  export interface PluginOffer {
6
6
  campaignId: string;
7
7
  accountId: string;
8
+ /** The rendered ad's id; absent until the transactions API sends it. */
9
+ adId?: string;
8
10
  maxTotalItemsQtyInOffer: number;
9
11
  creative: PluginCreative;
10
12
  metadata: Record<string, string>;
@@ -0,0 +1,7 @@
1
+ import { AttributesState } from '../models';
2
+ export declare const SET_ATTRIBUTES = "ATTRIBUTES/SET";
3
+ export type SetAttributesAction = {
4
+ type: typeof SET_ATTRIBUTES;
5
+ payload: AttributesState;
6
+ };
7
+ export type AttributesActions = SetAttributesAction;
@@ -1,6 +1,7 @@
1
1
  import { OpenLink, PrepareSignal, RaiseMetric, RaiseSignal, SendPartner, SetDomainState } from '../../../domain/src/behaviors';
2
2
  import { ActiveStateActions } from './active';
3
3
  import { BreakpointActions, SetBreakpoints } from './breakpoint';
4
+ import { AttributesActions } from './attributes';
4
5
  import { FontsActions } from './fonts';
5
6
  import { LayoutActions } from './layout';
6
7
  import { ClosePlugin } from './plugin';
@@ -25,16 +26,18 @@ export * from './error';
25
26
  export * from './log';
26
27
  export * from './overlay';
27
28
  export * from './plugin';
29
+ export * from './attributes';
28
30
  export * from './custom-states';
29
31
  export * from './domain-states';
30
32
  export * from './form-states';
31
- export type CoreStateActions = LayoutActions | BreakpointActions | ActiveStateActions | FontsActions | SignalStateActions | SerializableCacheActions | SettingsActions | CustomStatesActions | SetDomainStateReducer | LayoutEventAction | FormStatesActions;
33
+ export type CoreStateActions = LayoutActions | BreakpointActions | ActiveStateActions | AttributesActions | FontsActions | SignalStateActions | SerializableCacheActions | SettingsActions | CustomStatesActions | SetDomainStateReducer | LayoutEventAction | FormStatesActions;
32
34
  export declare const coreStateActionTypes: {
33
35
  readonly LAYOUT_UPDATE: "LAYOUT/UPDATE";
34
36
  readonly UPDATE_ACTIVE_BREAKPOINT: "BREAKPOINT/UPDATE_ACTIVE";
35
37
  readonly INITIALISE_BREAKPOINT: "BREAKPOINT/INITIALISE";
36
38
  readonly ACTIVE_ADD: "ACTIVE/ADD";
37
39
  readonly ACTIVE_DELETE: "ACTIVE/DELETE";
40
+ readonly SET_ATTRIBUTES: "ATTRIBUTES/SET";
38
41
  readonly SET_FONTS: "FONTS/SET";
39
42
  readonly QUEUE_SIGNAL: "SIGNAL/QUEUE";
40
43
  readonly SIGNAL_PROCESSED: "SIGNAL/PROCESSED";
@@ -0,0 +1,2 @@
1
+ import { NormalizedAttributes } from '@rokt/plugin/interface/attributes';
2
+ export type AttributesState = NormalizedAttributes;
@@ -1,4 +1,5 @@
1
1
  import { ActiveState } from './active';
2
+ import { AttributesState } from './attributes';
2
3
  import { BreakpointState } from './breakpoint';
3
4
  import { FontsState } from './fonts';
4
5
  import { LayoutState } from './layout';
@@ -9,6 +10,7 @@ import { CustomStatesIndexState } from './custom-states';
9
10
  import { FiredEventsIndexState } from './fired-events';
10
11
  import { FormStatesIndexState } from './form-states';
11
12
  export * from './active';
13
+ export * from './attributes';
12
14
  export * from './breakpoint';
13
15
  export * from './fonts';
14
16
  export * from './layout';
@@ -22,6 +24,7 @@ export type CoreAppState = {
22
24
  layout: LayoutState;
23
25
  breakpoint: BreakpointState;
24
26
  active: ActiveState;
27
+ attributes: AttributesState;
25
28
  fonts: FontsState;
26
29
  signal: SignalState;
27
30
  serializableCache: SerializableCacheState;
@@ -0,0 +1 @@
1
+ export * from './reducer';
@@ -0,0 +1,4 @@
1
+ import { AnyAction } from '@reduxjs/toolkit';
2
+ import { AttributesState } from '../../models';
3
+ export declare function makeInitialAttributesState(): AttributesState;
4
+ export declare function attributesReducer(state: AttributesState | undefined, action: AnyAction): AttributesState;
@@ -2,6 +2,7 @@ import { CoreAppState } from '../models';
2
2
  import { breakpointReducer } from './breakpoint';
3
3
  import { layoutReducer } from './layout';
4
4
  import { activeReducer } from './active';
5
+ import { attributesReducer } from './attributes';
5
6
  import { fontsReducer } from './fonts';
6
7
  import { signalReducer } from './signal';
7
8
  import { serializableCacheReducer } from './serializable-cache';
@@ -12,6 +13,7 @@ import { formStatesReducer } from './form-states';
12
13
  export * from './breakpoint';
13
14
  export * from './layout';
14
15
  export * from './active';
16
+ export * from './attributes';
15
17
  export * from './fonts';
16
18
  export * from './signal';
17
19
  export * from './serializable-cache';
@@ -23,6 +25,7 @@ export declare const coreAppReducers: {
23
25
  layout: typeof layoutReducer;
24
26
  breakpoint: typeof breakpointReducer;
25
27
  active: typeof activeReducer;
28
+ attributes: typeof attributesReducer;
26
29
  fonts: typeof fontsReducer;
27
30
  signal: typeof signalReducer;
28
31
  serializableCache: typeof serializableCacheReducer;
@@ -1,5 +1,5 @@
1
1
  import { EventChannel } from 'redux-saga';
2
2
  import { ThemeInterface } from '@rokt/plugin';
3
- import { ConfigService } from '../../../../plugin-utils/src/index';
4
- import { HandleConfigAction, SetFontsAction } from '../../actions';
5
- export declare function makeWsdkChannel<LayoutModelType, PluginModelType>(configService: ConfigService<LayoutModelType>, themeService: ThemeInterface, transformRawConfig: (config: LayoutModelType) => PluginModelType | undefined): EventChannel<HandleConfigAction<PluginModelType> | SetFontsAction>;
3
+ import { AttributesService, ConfigService } from '../../../../plugin-utils/src/index';
4
+ import { HandleConfigAction, SetAttributesAction, SetFontsAction } from '../../actions';
5
+ export declare function makeWsdkChannel<LayoutModelType, PluginModelType>(configService: ConfigService<LayoutModelType>, themeService: ThemeInterface, transformRawConfig: (config: LayoutModelType) => PluginModelType | undefined, attributesService?: AttributesService): EventChannel<HandleConfigAction<PluginModelType> | SetFontsAction | SetAttributesAction>;
@@ -19,6 +19,7 @@ export declare function getDisplaySettings(preset?: LayoutDisplayPreset | null,
19
19
  width: string;
20
20
  };
21
21
  css?: undefined;
22
+ lockHostScroll?: undefined;
22
23
  } | {
23
24
  autoresize: boolean;
24
25
  css: {
@@ -34,9 +35,11 @@ export declare function getDisplaySettings(preset?: LayoutDisplayPreset | null,
34
35
  replaceTargetElement?: undefined;
35
36
  outerCss?: undefined;
36
37
  innerCss?: undefined;
38
+ lockHostScroll?: undefined;
37
39
  } | {
38
40
  autoresize: boolean;
39
41
  applyHighestZIndex: boolean;
42
+ lockHostScroll: boolean;
40
43
  replaceTargetElement: string;
41
44
  css: {
42
45
  zIndex?: number | undefined;
@@ -1,11 +1,14 @@
1
1
  import { CallEffect, PutEffect, SelectEffect } from '@redux-saga/core/effects';
2
+ import { OutboundPartnerEvent } from '../../../../domain/src/models';
3
+ import { SendPartner } from '../../../../domain/src/behaviors';
2
4
  import { FrameControls, LayoutDisplayPreset } from '@rokt/dcui-layout-schema';
3
5
  import { RaceEffect } from 'redux-saga/effects';
4
- import { ContextService, DisplayService, PluginService } from '../../../../plugin-utils/src/index';
6
+ import { ContextService, DisplayService, PartnerInteractionService, PluginService } from '../../../../plugin-utils/src/index';
5
7
  import { HandleConfigAction, ReportError } from '../../actions';
6
8
  import { EventChannel } from 'redux-saga';
7
9
  export declare function closePlugin(contextService: ContextService): Generator<RaceEffect<CallEffect | Generator<SelectEffect | CallEffect, void, boolean>> | SelectEffect | CallEffect | Generator<SelectEffect | CallEffect, void, boolean> | PutEffect<ReportError>, void, boolean>;
8
- export declare function listenToWsdkChannel<LayoutModelType, PluginModelType>(pluginService: PluginService<LayoutModelType>, transformRawConfig: (config: LayoutModelType) => PluginModelType | undefined): Generator<PutEffect<ReportError> | CallEffect<EventChannel<import("../../../../orchestrator/src/actions").SetFontsAction | HandleConfigAction<PluginModelType>>> | import("redux-saga/effects").ChannelTakeEffect<HandleConfigAction<PluginModelType>> | PutEffect<HandleConfigAction<PluginModelType>>, void, EventChannel<HandleConfigAction<PluginModelType>> & HandleConfigAction<PluginModelType>>;
10
+ export declare function handlePartnerSend(partnerInteractionService: PartnerInteractionService, { payload }: SendPartner<OutboundPartnerEvent>): Generator<Promise<void>, void, void>;
11
+ export declare function listenToWsdkChannel<LayoutModelType, PluginModelType>(pluginService: PluginService<LayoutModelType>, transformRawConfig: (config: LayoutModelType) => PluginModelType | undefined): Generator<PutEffect<ReportError> | CallEffect<EventChannel<import("../../../../orchestrator/src/actions").SetAttributesAction | import("../../../../orchestrator/src/actions").SetFontsAction | HandleConfigAction<PluginModelType>>> | import("redux-saga/effects").ChannelTakeEffect<HandleConfigAction<PluginModelType>> | PutEffect<HandleConfigAction<PluginModelType>>, void, EventChannel<HandleConfigAction<PluginModelType>> & HandleConfigAction<PluginModelType>>;
9
12
  export declare function wsdkSagas<LayoutModelType, PluginModelType>(pluginService: PluginService<LayoutModelType>, transformRawConfig: (config: LayoutModelType) => PluginModelType | undefined): Generator<import("redux-saga/effects").AllEffect<import("redux-saga/effects").ForkEffect<void>>, void, unknown>;
10
13
  export declare function displayPlugin(displayService: DisplayService, preset?: LayoutDisplayPreset | null, controls?: FrameControls | null): Generator<CallEffect<void> | import("redux-saga/effects").ForkEffect<void> | PutEffect<{
11
14
  type: "ACTIVE/ADD";
@@ -1,6 +1,6 @@
1
1
  export { ModuleAttributes } from './models/module-attributes';
2
2
  export { ModuleConnectorBuilder, AppSettings, } from './models/module-connector-builder';
3
- export { IGateway, IDisposable, Gateway, GetFonts, GatewayFactory, ActionInterceptor, EmptyGateway, GlobalGateway, GlobalGatewayFactory, makeGatewayFactory, ModuleEventListener, } from './models/gateway';
3
+ export { IGateway, ContinuousGatewayService, IDisposable, Gateway, GetFonts, GatewayFactory, ActionInterceptor, EmptyGateway, GlobalGateway, GlobalGatewayFactory, makeGatewayFactory, ModuleEventListener, } from './models/gateway';
4
4
  export * from './models/module';
5
5
  export { AbstractStore } from './models/abstract-store';
6
6
  export { AbstractGlobalStore, GlobalStoreOfferContext, } from './models/abstract-global-store';
@@ -1,4 +1,4 @@
1
- import { GlobalState, Interactivity } from '../../../domain/src/models';
1
+ import { GlobalState, Interactivity, PluginLayoutChild } from '../../../domain/src/models';
2
2
  import { GlobalActions } from '../../../domain/src/behaviors';
3
3
  import { ChildPluginFactoryInterface, Fonts, PartnerInteractionInterface } from '@rokt/plugin';
4
4
  import { Subscriber } from '@rokt/plugin/interface/subscriber';
@@ -10,6 +10,11 @@ export type ChildPluginFactoryOptions = Parameters<ChildPluginFactory>[0];
10
10
  export type GetFonts = () => Fonts;
11
11
  export type GatewayFactory<State extends object, Action extends object> = (offerContext: GlobalStoreOfferContext, interactivityChannel: ISubscribable<Interactivity> & IClearable) => IGateway<State, Action> & IDisposable;
12
12
  export type ActionInterceptor<Action extends object> = (action: Action) => Action | undefined;
13
+ /** Trusted parent services; the gateway binds the module's served offer identity. */
14
+ export interface ContinuousGatewayService {
15
+ register(context: GlobalStoreOfferContext, dispatch: (action: GlobalActions) => void): () => void;
16
+ launch(context: GlobalStoreOfferContext, child: PluginLayoutChild): Promise<boolean>;
17
+ }
13
18
  export type ModuleEventListener = {
14
19
  name: string;
15
20
  source: 'partner' | '*';
@@ -21,14 +26,20 @@ export interface IGateway<State extends object, Action extends object> {
21
26
  onInteractivityChange(callback: (interactivity: Interactivity) => void): () => void;
22
27
  globalDispatch(action: Action): void;
23
28
  createChildPlugin: ChildPluginFactory;
29
+ registerContinuousResponseHandler?: (dispatch: (action: GlobalActions) => void) => () => void;
30
+ launchContinuousChild?: (child: PluginLayoutChild) => Promise<boolean>;
31
+ scrollHostToViewportOffset?: (viewportOffsetY: number) => Promise<void>;
24
32
  }
25
33
  export interface IDisposable {
26
34
  dispose(): void;
27
35
  }
28
- export declare function makeGatewayFactory<State extends object, Action extends object>(globalStore: AbstractGlobalStore<State, Action>, createChildPlugin: ChildPluginFactory, onPartnerEvent: PartnerEventReceiver, getFonts?: GetFonts): GatewayFactory<State, Action>;
36
+ export declare function makeGatewayFactory<State extends object, Action extends object>(globalStore: AbstractGlobalStore<State, Action>, createChildPlugin: ChildPluginFactory, onPartnerEvent: PartnerEventReceiver, getFonts?: GetFonts, scrollHostToViewportOffset?: (viewportOffsetY: number) => Promise<void>, continuous?: ContinuousGatewayService): GatewayFactory<State, Action>;
29
37
  export declare class Gateway<State extends object, Action extends object> implements IGateway<State, Action>, IDisposable {
30
38
  #private;
31
- constructor(store: AbstractGlobalStore<State, Action>, createChildPlugin: ChildPluginFactory, context: GlobalStoreOfferContext, interactivityChannel: ISubscribable<Interactivity> & IClearable, onPartnerEvent: PartnerEventReceiver, getFonts?: GetFonts);
39
+ scrollHostToViewportOffset?: (viewportOffsetY: number) => Promise<void>;
40
+ registerContinuousResponseHandler?: (dispatch: (action: GlobalActions) => void) => () => void;
41
+ launchContinuousChild?: (child: PluginLayoutChild) => Promise<boolean>;
42
+ constructor(store: AbstractGlobalStore<State, Action>, createChildPlugin: ChildPluginFactory, context: GlobalStoreOfferContext, interactivityChannel: ISubscribable<Interactivity> & IClearable, onPartnerEvent: PartnerEventReceiver, getFonts?: GetFonts, scrollHostToViewportOffset?: (viewportOffsetY: number) => Promise<void>, continuous?: ContinuousGatewayService);
32
43
  onGlobalStateChange(callback: (globalState: State) => void): () => void;
33
44
  onInteractivityChange(callback: (interactivity: Interactivity) => void): () => void;
34
45
  onEvent(...moduleEventListeners: Array<ModuleEventListener>): () => void;
@@ -13,5 +13,7 @@ type BridgeChannelMessage = {
13
13
  export declare function childLayoutBridge(gateway: GlobalGateway, logger: (log: Log) => void, childPlugin: ChildPluginInterface<BasicObject>, offerContext: {
14
14
  offer: PluginOffer;
15
15
  offerPositionIndex: number | undefined;
16
+ childInstanceGuid: string;
17
+ advanceOnDismiss?: boolean;
16
18
  }): Generator<PutEffect | CallEffect | CancelledEffect | RaceEffect<ChannelTakeEffect<BridgeChannelMessage> | CallEffect>, void, never>;
17
19
  export {};