[Exposed=Window, SecureContext]
interface FederatedCredential : Credential {
    constructor(FederatedCredentialInit data);
    readonly attribute USVString provider;
    readonly attribute DOMString? protocol;
};
FederatedCredential includes CredentialUserData;

dictionary FederatedCredentialRequestOptions {
    sequence<USVString> providers;
    sequence<DOMString> protocols;
};

partial dictionary CredentialRequestOptions {
    FederatedCredentialRequestOptions federated;
};

dictionary FederatedCredentialInit : CredentialData {
    USVString name;
    USVString iconURL;
    required USVString provider;
    DOMString protocol;

    // We don't carry the "origin" field from the spec.
    // https://github.com/w3c/webappsec-credential-management/pull/131
};

partial dictionary CredentialCreationOptions {
    FederatedCredentialInit federated;
};
