> ## Documentation Index
> Fetch the complete documentation index at: https://primer.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# provideNolPayUnlinkCardComponent

export const collectableData = "NolPayUnlinkCollectableData";

This method allows you get a new instance of `NolPayUnlinkCardComponent` that can be used to unlink existing
nol Pay cards.

```kotlin KOTLIN theme={"dark"}
fun provideNolPayUnlinkCardComponent(viewModelStoreOwner: ViewModelStoreOwner): NolPayUnlinkCardComponent
```

## Parameters

<Expandable title="Parameters" defaultOpen>
  <ResponseField name="viewModelStoreOwner" type="ViewModelStoreOwner" required>
    The [ViewModelStoreOwner](https://developer.android.com/reference/androidx/lifecycle/ViewModelStoreOwner)
    to associate with the component.
  </ResponseField>
</Expandable>

## Returns

An instance of `NolPayUnlinkCardComponent`.

<Expandable title="NolPayUnlinkCardComponent" defaultOpen>
  <ResponseField name="start()">
    Initialize the component by calling the start function. This method should be called only once.
  </ResponseField>

  <ResponseField name="updateCollectedData(collectableData: NolPayUnlinkCollectableData)">
    Update component with collected data by passing implementations of sealed interface representing collectable data for unlinking a nol Pay card.
    This method can be called at any point, even if you have only partially collected data.
    To validate the partially collected data, you can refer to the
    [componentValidationStatus](#component-validation-status-flow-primer-validation-status-nol-pay-unlink-collectable-data)
    and receive the validation status when it's updated.

    <Expandable title="sealed interface NolPayUnlinkCollectableData">
      <ResponseField name="NolPayCardAndPhoneData">
        Data class representing nol Pay card and phone data for unlinking.

        <Expandable title="Properties" defaultOpen>
          <ResponseField name="nolPaymentCard" type="PrimerNolPaymentCard">
            The nol Pay payment card to unlink is retrieved using [NolPayLinkedCardsComponent](/sdk/android/v2.x.x/primer-headless-checkout/nol-pay-manager/provideNolPayLinkedCardsComponent).
          </ResponseField>

          <ResponseField name="mobileNumber" type="String">
            The mobile number in [E.164](https://www.twilio.com/docs/glossary/what-e164) format that was associated with the nol Pay account.
          </ResponseField>
        </Expandable>
      </ResponseField>

      <ResponseField name="NolPayOtpData">
        Data class representing nol Pay OTP (One-Time Password) data collected during the unlinking process.

        <Expandable title="Properties" defaultOpen>
          <ResponseField name="otpCode">
            The OTP code required for card linking.
          </ResponseField>
        </Expandable>
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name="submit()">
    Call `submit` function in order to process collected data and move component to next state.
  </ResponseField>

  <ResponseField name="componentStep: Flow<NolPayUnlinkCardStep>">
    <p>
      <code>NolPayUnlinkCardStep</code> is a class holding different output data for specific steps. Whenever{' '}
      <a href={`#param-start`}>start</a> or <a href={`#param-submit`}>submit</a> methods are
      called,
      <code>componentStep</code> will trigger the next step in case the call to the mentioned method was successful.
    </p>

    <Expandable title="sealed interface NolPayUnlinkCardStep">
      <ResponseField name="CollectCardAndPhoneData">
        Object representing the step to collect card and phone data for unlinking nol Pay card.
      </ResponseField>

      <ResponseField name="CollectOtpData">
        Object representing the step of collecting OTP (One-Time Password) data for nol Pay card unlinking.
      </ResponseField>

      <ResponseField name="CardUnlinked">
        Data class representing the step when a card has been successfully unlinked.

        <Expandable title="Properties" defaultOpen>
          <ResponseField name="nolPaymentCard" type="PrimerNolPaymentCard">
            The unlinked nol Pay card.
          </ResponseField>
        </Expandable>
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name={`componentValidationStatus: Flow<PrimerValidationStatus<${collectableData}>>`}>
    The `PrimerValidationStatus` interface encompasses a range of validation statuses.

    <Expandable title="sealed interface PrimerValidationStatus">
      <ResponseField name={`Validating<${collectableData}>`}>
        Indicates that data is currently in the process of being validated.

        <Expandable title="Properties" defaultOpen>
          <ResponseField name="collectableData" type={`${collectableData}`}>
            The data being validated.
          </ResponseField>
        </Expandable>
      </ResponseField>

      <ResponseField name={`Valid<${collectableData}>`}>
        Indicates that the data has successfully been validated.

        <Expandable title="Properties" defaultOpen>
          <ResponseField name="collectableData" type={`${collectableData}`}>
            The successfully validated data.
          </ResponseField>
        </Expandable>
      </ResponseField>

      <ResponseField name={`Invalid<${collectableData}>`}>
        Indicates that the data has been considered invalid after validation.

        <Expandable title="Properties" defaultOpen>
          <ResponseField name="validationErrors" type="List<PrimerValidationError>">
            List of `PrimerValidationError` objects that represent data validation errors emitted by this component.

            <Expandable title="PrimerValidationError">
              <ResponseField name="List<PrimerValidationError>">
                <Expandable title="Type">
                  <ResponseField name="PrimerValidationError">
                    <Expandable title="Properties">
                      <ResponseField name="errorId" type="String" required>
                        A unique error identifier.
                      </ResponseField>

                      <ResponseField name="description" type="String" required>
                        A error description.
                      </ResponseField>

                      <ResponseField name="diagnosticsId" type="String" required>
                        A unique diagnostics id for the given error.
                      </ResponseField>
                    </Expandable>
                  </ResponseField>
                </Expandable>
              </ResponseField>
            </Expandable>
          </ResponseField>

          <ResponseField name="collectableData" type={`${collectableData}`}>
            The data that failed validation.
          </ResponseField>
        </Expandable>
      </ResponseField>

      <ResponseField name={`Error<${collectableData}>`}>
        Represents the status when an error occurred during the validation process.

        <Expandable title="Properties" defaultOpen>
          <ResponseField name="error" type="PrimerError">
            The specific `PrimerError` that occurred during validation.

            <Expandable title="PrimerValidationError">
              <ResponseField name="errorId" type="String" required>
                A unique error identifier.
              </ResponseField>

              <ResponseField name="errorCode" type="String?">
                A unique error code.
              </ResponseField>

              <ResponseField name="description" type="String" required>
                A error description.
              </ResponseField>

              <ResponseField name="recoverySuggestion" type="String?">
                A recovery suggestion for the given error. In case it's present, use it to try
                to recover from error.
              </ResponseField>

              <ResponseField name="diagnosticsId" type="String" required>
                A unique diagnostics id for the given error.
              </ResponseField>
            </Expandable>
          </ResponseField>

          <ResponseField name="collectableData" type={`${collectableData}`}>
            The data for which the error occurred.
          </ResponseField>
        </Expandable>
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name="componentError: Flow<PrimerError>">
    Get a [Flow](https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/)
    of [PrimerError](/sdk/android/v2.x.x/common-objects/PrimerError) objects that represent errors emitted by this component.
    Subscribers can observe and handle errors using this Flow.
  </ResponseField>
</Expandable>
