{
  "version": 3,
  "sources": ["../../../ic-client/src/webauthn/aaguid.ts", "../../../ic-client/src/webauthn/agent-js/cose-utils.ts", "../../../ic-client/src/webauthn/agent-js/cose-key.ts", "../../../ic-client/src/webauthn/credential.ts", "../../../ic-client/src/webauthn/errors.ts", "../../../ic-client/src/webauthn/identity.ts", "../../../ic-client/src/webauthn/_constants.ts", "../../../ic-client/src/webauthn/_options.ts", "../../../ic-client/src/webauthn/_progress.ts", "../../../ic-client/src/webauthn/types/progress.ts", "../../../ic-client/src/webauthn/utils.ts", "../../src/index.ts", "../../src/auth/services/auth-timout.services.ts", "../../src/core/stores/_store.ts", "../../src/auth/stores/auth.store.ts", "../../src/auth/utils/events.utils.ts", "../../src/core/stores/actor.store.ts", "../../src/core/stores/agent.store.ts", "../../src/core/stores/_agent.factory.ts", "../../src/core/constants/container.constants.ts", "../../src/auth/stores/auth-client.store.ts", "../../src/auth/services/sign-out.services.ts", "../../src/auth/providers/_auth-broadcast.providers.ts", "../../src/core/stores/env.store.ts", "../../src/auth/services/_auth-client.services.ts", "../../../errors/src/utils.ts", "../../../errors/src/constants/cdn.constants.ts", "../../../errors/src/constants/collections.constants.ts", "../../../errors/src/constants/satellite.constants.ts", "../../../errors/src/constants/shared.constants.ts", "../../src/auth/services/_user.services.ts", "../../src/core/constants/call-options.constants.ts", "../../src/core/services/any-identity.services.ts", "../../src/auth/services/identity.services.ts", "../../src/datastore/api/doc.api.ts", "../../../ic-client/src/actor/api/actor.api.ts", "../../../ic-client/src/declarations/mission_control/mission_control.factory.did.js", "../../../ic-client/src/declarations/orbiter/orbiter.factory.did.js", "../../../ic-client/src/declarations/orbiter/orbiter.factory.certified.did.js", "../../../ic-client/src/declarations/deprecated/satellite-deprecated-no-scope.factory.did.js", "../../../ic-client/src/declarations/deprecated/satellite-deprecated-version.factory.did.js", "../../../ic-client/src/declarations/deprecated/orbiter-deprecated-version.factory.did.js", "../../../ic-client/src/declarations/deprecated/mission_control-deprecated-version.factory.did.js", "../../../ic-client/src/declarations/deprecated/satellite-deprecated.factory.did.js", "../../../ic-client/src/declarations/satellite/satellite.factory.did.js", "../../../ic-client/src/declarations/satellite/satellite.factory.certified.did.js", "../../../ic-client/src/declarations/console/console.factory.did.js", "../../../ic-client/src/declarations/console/console.factory.certified.did.js", "../../../ic-client/src/declarations/sputnik/sputnik.factory.did.js", "../../../ic-client/src/actor/api/agent.api.ts", "../../../ic-client/src/actor/utils/agent.utils.ts", "../../src/core/api/actor.api.ts", "../../src/core/utils/env.utils.ts", "../../src/core/utils/list.utils.ts", "../../src/auth/types/errors.ts", "../../src/datastore/utils/data.utils.ts", "../../src/datastore/utils/doc.utils.ts", "../../src/datastore/services/doc.services.ts", "../../src/auth/services/load.services.ts", "../../src/auth/services/broadcast.services.ts", "../../src/core/utils/window.env.utils.ts", "../../src/auth/providers/internet-identity.providers.ts", "../../src/auth/constants/auth.constants.ts", "../../src/auth/utils/window.utils.ts", "../../src/auth/providers/_auth-client.providers.ts", "../../src/auth/helpers/progress.helpers.ts", "../../src/auth/types/auth-client.ts", "../../../auth/src/utils/nonce.utils.ts", "../../../auth/src/utils/url.utils.ts", "../../../auth/src/delegation/_constants.ts", "../../../auth/src/delegation/_context.ts", "../../../auth/src/delegation/errors.ts", "../../../auth/src/delegation/utils/session-storage.utils.ts", "../../../auth/src/delegation/_session.ts", "../../../auth/src/delegation/api/_actor.api.ts", "../../../auth/src/delegation/api/auth.api.ts", "../../../auth/src/delegation/utils/session.utils.ts", "../../../auth/src/delegation/providers/github/authenticate.ts", "../../../auth/src/delegation/providers/github/_api.ts", "../../../auth/src/delegation/providers/google/authenticate.ts", "../../../auth/src/delegation/authenticate.ts", "../../../auth/src/delegation/utils/url.utils.ts", "../../../auth/src/delegation/providers/github/_context.ts", "../../../auth/src/delegation/providers/github/_openid.ts", "../../../auth/src/delegation/utils/state.utils.ts", "../../../auth/src/delegation/providers/google/_context.ts", "../../../auth/src/delegation/providers/google/_openid.ts", "../../../auth/src/delegation/request.ts", "../../../auth/src/delegation/utils/openid.utils.ts", "../../src/auth/services/redirect.services.ts", "../../src/auth/utils/url.utils.ts", "../../src/auth/helpers/window.helpers.ts", "../../../ic-client/src/dev/errors.ts", "../../../ic-client/src/dev/identity.ts", "../../../../node_modules/idb-keyval/dist/index.js", "../../src/auth/providers/dev-identity.providers.ts", "../../src/auth/providers/github.providers.ts", "../../src/auth/providers/google.providers.ts", "../../src/auth/providers/webauthn.providers.ts", "../../src/auth/services/user-webauthn.services.ts", "../../src/auth/types/webauthn.ts", "../../src/auth/services/sign-in.services.ts", "../../src/auth/services/sign-up.services.ts", "../../src/auth/utils/user.utils.ts", "../../src/functions/services/functions.services.ts", "../../src/storage/services/storage.services.ts", "../../../storage/src/services/upload.services.ts", "../../src/storage/api/storage.api.ts", "../../src/storage/utils/crypto.utils.ts"],
  "sourcesContent": ["import {uint8ArrayToArrayOfNumber} from '@junobuild/utils';\n\n/**\n * Extracts the AAGUID (Authenticator Attestation GUID) from a WebAuthn data buffer.\n *\n * The AAGUID is a 16-byte value located at offsets 37..53 within `authenticatorData`\n * when **attested credential data** is present (i.e., during registration/attestation).\n *\n * For assertion (sign-in) responses, `authenticatorData` is typically 37 bytes and\n * does not include an AAGUID.\n *\n * If the extracted value is all zeros (`00000000-0000-0000-0000-000000000000`),\n * this function returns `{ unknownProvider: null }` since some passkey providers\n * intentionally use a zero AAGUID.\n *\n * @param {Object} params\n * @param {Uint8Array} params.authData - The WebAuthn `authenticatorData` bytes.\n * @returns {{aaguid: string; bytes: Uint8Array} | {invalidAuthData: null} | {unknownProvider: null}}\n * - { aaguidText, aaguidBytes } for valid AAGUID\n * - { unknownProvider: null } for all-zero AAGUID\n * - { invalidAuthData: null } if `authData` is invalid (too short, too long, etc.)\n *\n * @see https://web.dev/articles/webauthn-aaguid\n */\nexport const extractAAGUID = ({\n  authData\n}: {\n  authData: Uint8Array;\n}):\n  | {aaguidText: string; aaguidBytes: Uint8Array}\n  | {invalidAuthData: null}\n  | {unknownProvider: null} => {\n  if (authData.byteLength < 37) {\n    return {invalidAuthData: null};\n  }\n\n  if (authData.byteLength < 53) {\n    return {invalidAuthData: null};\n  }\n\n  const bytes = authData.slice(37, 53);\n\n  const result = bytesToAAGUID({bytes});\n\n  if ('aaguid' in result) {\n    return {aaguidBytes: bytes, aaguidText: result.aaguid};\n  }\n\n  return {unknownProvider: null};\n};\n\n/**\n * Convert 16 AAGUID bytes to canonical UUID string (lowercase, hyphenated).\n *\n * Returns:\n * - { aaguid } for non-zero AAGUIDs\n * - { unknownProvider: null } for all-zero AAGUID\n * - { invalidBytes: null } if length \u2260 16\n *\n * @param {{bytes: Uint8Array | number[]}} params\n * @returns {{aaguid: string} | {invalidBytes: null} | {unknownProvider: null}}\n */\nexport const bytesToAAGUID = ({\n  bytes\n}: {\n  bytes: Uint8Array | number[];\n}): {aaguid: string} | {invalidBytes: null} | {unknownProvider: null} => {\n  if (bytes.length !== 16) {\n    return {invalidBytes: null};\n  }\n\n  const hex = (bytes instanceof Uint8Array ? uint8ArrayToArrayOfNumber(bytes) : bytes)\n    .map((byte) => byte.toString(16).padStart(2, '0'))\n    .join('');\n\n  const aaguid = hex.replace(/^(.{8})(.{4})(.{4})(.{4})(.{12})$/, '$1-$2-$3-$4-$5');\n\n  // \"00000000-0000-0000-0000-0000000000000\" represents an unknown passkey provider. Some passkey providers use this AAGUID intentionally.\n  // Source: https://web.dev/articles/webauthn-aaguid\n  if (aaguid === '00000000-0000-0000-0000-000000000000') {\n    return {unknownProvider: null};\n  }\n\n  return {aaguid};\n};\n", "import {DER_COSE_OID, wrapDER, type DerEncodedPublicKey} from '@icp-sdk/core/agent';\n\n/**\n * \u26A0\uFE0F !!!WARNING!!! \u26A0\uFE0F\n * This module is a copy/paste of the webauthn functions not exposed by Agent-js.\n * It is therefore not covered by any tests (\u203C\uFE0F) in this library.\n *\n * @see https://github.com/dfinity/agent-js/blob/main/packages/identity/src/identity/webauthn.ts\n */\n\n/**\n * From the documentation;\n * The authData is a byte array described in the spec. Parsing it will involve slicing bytes from\n * the array and converting them into usable objects.\n *\n * See https://webauthn.guide/#registration (subsection \"Example: Parsing the authenticator data\").\n * @param authData The authData field of the attestation response.\n * @returns The COSE key of the authData.\n */\nexport function _authDataToCose(authData: Uint8Array): Uint8Array {\n  const dataView = new DataView(new ArrayBuffer(2));\n  const idLenBytes = authData.slice(53, 55);\n  [...new Uint8Array(idLenBytes)].forEach((v, i) => dataView.setUint8(i, v));\n  const credentialIdLength = dataView.getUint16(0);\n\n  // Get the public key object.\n  return authData.slice(55 + credentialIdLength);\n}\n\nexport function _coseToDerEncodedBlob(cose: Uint8Array): DerEncodedPublicKey {\n  return wrapDER(cose, DER_COSE_OID) as DerEncodedPublicKey;\n}\n", "import type {DerEncodedPublicKey} from '@icp-sdk/core/agent';\nimport type {PublicKeyWithToRaw} from '../types/identity';\nimport {_coseToDerEncodedBlob} from './cose-utils';\n\n/**\n * \u26A0\uFE0F !!!WARNING!!! \u26A0\uFE0F\n * This module is a copy/paste of the webauthn classes not exposed by Agent-js\n * extended with mandatory toRaw() and encodedKey made private.\n * It is therefore not covered by that many tests (\u203C\uFE0F) in this library.\n *\n * @see https://github.com/dfinity/agent-js/blob/main/packages/identity/src/identity/webauthn.ts\n */\n\n/**\n * COSE-encoded key (CBOR Object Signing and Encryption).\n * serialized as a Uint8Array.\n */\nexport type CoseEncodedKey = Uint8Array;\n\nexport class CosePublicKey implements PublicKeyWithToRaw {\n  readonly #encodedKey: DerEncodedPublicKey;\n\n  public constructor(protected _cose: CoseEncodedKey) {\n    this.#encodedKey = _coseToDerEncodedBlob(_cose);\n  }\n\n  public toDer(): DerEncodedPublicKey {\n    return this.#encodedKey;\n  }\n\n  public toRaw(): Uint8Array {\n    return new Uint8Array(this.#encodedKey); // Strip __derEncodedPublicKey__\n  }\n}\n", "import {uint8ArrayToBase64} from '@junobuild/utils';\nimport {extractAAGUID} from './aaguid';\nimport {type CoseEncodedKey, CosePublicKey} from './agent-js/cose-key';\nimport type {PublicKeyWithToRaw} from './types/identity';\n\n/**\n * Arguments to initialize a WebAuthn object.\n */\nexport interface InitWebAuthnCredentialArgs {\n  /**\n   * The credential ID (authenticator\u2019s `rawId`) as bytes.\n   */\n  rawId: Uint8Array;\n\n  /**\n   * COSE-encoded public key extracted from attestation/authData.\n   */\n  cose: CoseEncodedKey;\n}\n\nexport interface InitWebAuthnNewCredentialArgs extends InitWebAuthnCredentialArgs {\n  /**\n   * The authenticator data from the attestation.\n   */\n  authData: Uint8Array;\n}\n\n/**\n * A wrapper around a WebAuthn credential that provides various base information such as its ID or public key.\n */\nexport abstract class WebAuthnCredential {\n  readonly #credentialId: Uint8Array;\n  readonly #publicKey: CosePublicKey;\n\n  /**\n   * @param args - {@link InitWebAuthnCredentialArgs} used to initialize the credential.\n   * @param args.rawId - Credential ID (`rawId`) as bytes.\n   * @param args.cose - COSE-encoded public key.\n   */\n  constructor({rawId: credentialId, cose}: InitWebAuthnCredentialArgs) {\n    this.#credentialId = credentialId;\n    this.#publicKey = new CosePublicKey(cose);\n  }\n\n  /**\n   * Returns the public key for this credential.\n   */\n  getPublicKey(): PublicKeyWithToRaw {\n    return this.#publicKey;\n  }\n\n  /**\n   * Returns the credential ID as bytes.\n   */\n  getCredentialId(): Uint8Array {\n    return this.#credentialId;\n  }\n\n  /**\n   * Returns the credential ID as textual representation (a base64 string).\n   */\n  getCredentialIdText(): string {\n    return uint8ArrayToBase64(this.#credentialId);\n  }\n}\n\n/**\n * A wrapper around a newly created WebAuthn credential.\n * It is created using `navigator.credentials.create` which provides an attestation.\n */\nexport class WebAuthnNewCredential extends WebAuthnCredential {\n  readonly #aaguidText: string | undefined;\n  readonly #aaguidBytes: Uint8Array | undefined;\n\n  /**\n   * @param args - {@link InitWebAuthnNewCredentialArgs} used to initialize the credential.\n   * @param args.rawId - Credential ID (`rawId`) as bytes.\n   * @param args.cose - COSE-encoded public key.\n   * @params args.authData - Authenticator data from the attestation.\n   */\n  constructor({authData, ...rest}: InitWebAuthnNewCredentialArgs) {\n    super(rest);\n\n    const optionAaguid = extractAAGUID({authData});\n    this.#aaguidText = 'aaguidText' in optionAaguid ? optionAaguid.aaguidText : undefined;\n    this.#aaguidBytes = 'aaguidBytes' in optionAaguid ? optionAaguid.aaguidBytes : undefined;\n  }\n\n  /**\n   * Returns AAGUID (Authenticator Attestation GUID).\n   */\n  getAAGUID(): Uint8Array | undefined {\n    return this.#aaguidBytes;\n  }\n\n  /**\n   * Returns the textual representation of the AAGUID (Authenticator Attestation GUID).\n   */\n  getAAGUIDText(): string | undefined {\n    return this.#aaguidText;\n  }\n}\n\n/**\n * A wrapper around a retrieval of existing WebAuthn credential.\n * It is created using `navigator.credentials.get` which provides an assertion.\n */\nexport class WebAuthnExistingCredential extends WebAuthnCredential {}\n", "export class WebAuthnIdentityHostnameError extends Error {}\nexport class WebAuthnIdentityCredentialNotInitializedError extends Error {}\nexport class WebAuthnIdentityCreateCredentialOnTheDeviceError extends Error {}\nexport class WebAuthnIdentityCredentialNotPublicKeyError extends Error {}\nexport class WebAuthnIdentityNoAttestationError extends Error {}\nexport class WebAuthnIdentityInvalidCredentialIdError extends Error {}\nexport class WebAuthnIdentityEncodeCborSignatureError extends Error {}\n// https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAssertionResponse/authenticatorData\nexport class WebAuthnIdentityNoAuthenticatorDataError extends Error {}\n// https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAssertionResponse/signature\nexport class WebAuthnIdentityNoSignatureError extends Error {}\n", "import {Cbor, type Signature, SignIdentity} from '@icp-sdk/core/agent';\nimport {arrayBufferToUint8Array, isNullish, uint8ArraysEqual} from '@junobuild/utils';\nimport {AUTHENTICATOR_ABORT_TIMEOUT} from './_constants';\nimport {createPasskeyOptions, retrievePasskeyOptions} from './_options';\nimport {execute} from './_progress';\nimport {_authDataToCose} from './agent-js/cose-utils';\nimport {\n  type InitWebAuthnNewCredentialArgs,\n  type WebAuthnCredential,\n  WebAuthnExistingCredential,\n  WebAuthnNewCredential\n} from './credential';\nimport {\n  WebAuthnIdentityCreateCredentialOnTheDeviceError,\n  WebAuthnIdentityCredentialNotInitializedError,\n  WebAuthnIdentityCredentialNotPublicKeyError,\n  WebAuthnIdentityEncodeCborSignatureError,\n  WebAuthnIdentityInvalidCredentialIdError,\n  WebAuthnIdentityNoAttestationError,\n  WebAuthnIdentityNoAuthenticatorDataError\n} from './errors';\nimport type {\n  AuthenticatorOptions,\n  CreateWebAuthnIdentityWithExistingCredentialArgs,\n  CreateWebAuthnIdentityWithNewCredentialArgs,\n  PublicKeyWithToRaw,\n  RetrievePublicKeyFn\n} from './types/identity';\nimport type {PasskeyOptions} from './types/passkey';\nimport {\n  type WebAuthnSignProgressArgs,\n  type WebAuthnSignProgressFn,\n  WebAuthnSignProgressStep\n} from './types/progress';\n\ntype PublicKeyCredentialWithAttachment = Omit<PublicKeyCredential, 'response'> & {\n  response: AuthenticatorAssertionResponse & {\n    attestationObject?: ArrayBuffer;\n  };\n};\n\nconst createAbortSignal = ({\n  timeout\n}: Pick<AuthenticatorOptions<PasskeyOptions>, 'timeout'>): AbortSignal =>\n  AbortSignal.timeout(timeout ?? AUTHENTICATOR_ABORT_TIMEOUT);\n\nconst retrieveCredentials = async ({\n  challenge,\n  credentialIds,\n  passkeyOptions,\n  timeout\n}: {\n  challenge: Uint8Array;\n  credentialIds?: Uint8Array[];\n} & AuthenticatorOptions<PasskeyOptions>): Promise<Credential | null> =>\n  await navigator.credentials.get({\n    publicKey: {\n      ...retrievePasskeyOptions(passkeyOptions),\n      challenge: challenge.buffer as BufferSource,\n      allowCredentials: (credentialIds ?? []).map((id) => ({\n        id: id.buffer as BufferSource,\n        type: 'public-key'\n      }))\n    },\n    signal: createAbortSignal({timeout})\n  });\n\ntype WebAuthnState<T extends WebAuthnCredential> =\n  | {status: 'pending'; retrievePublicKey: RetrievePublicKeyFn}\n  | {status: 'initialized'; credential: T};\n\nconst assertWebAuthnStateInitialized: <T extends WebAuthnCredential>(\n  state: WebAuthnState<T>\n) => asserts state is {\n  status: 'initialized';\n  credential: T;\n} = <T extends WebAuthnCredential>(state: WebAuthnState<T>): void => {\n  if (state.status !== 'initialized') {\n    throw new WebAuthnIdentityCredentialNotInitializedError();\n  }\n};\n\nconst assertNonNullishCredential: (\n  credential: Credential | null\n) => asserts credential is Credential = (credential: Credential | null): void => {\n  if (isNullish(credential)) {\n    throw new WebAuthnIdentityCreateCredentialOnTheDeviceError();\n  }\n};\n\nconst assertCredentialPublicKey: (\n  credential: Credential\n) => asserts credential is PublicKeyCredentialWithAttachment = ({type}: Credential): void => {\n  if (type !== 'public-key') {\n    throw new WebAuthnIdentityCredentialNotPublicKeyError();\n  }\n};\n\n/**\n * A signing identity for the Internet Computer, backed by a WebAuthn credential.\n *\n * Use one of the factory methods to construct an instance:\n * - {@link WebAuthnIdentity.createWithNewCredential} to create a new passkey on the device.\n * - {@link WebAuthnIdentity.createWithExistingCredential} to use an existing passkey.\n *\n * @template T Concrete credential type for this identity\n * ({@link WebAuthnNewCredential} or {@link WebAuthnExistingCredential}).\n */\nexport class WebAuthnIdentity<T extends WebAuthnCredential> extends SignIdentity {\n  readonly #onSignProgress: WebAuthnSignProgressFn | undefined;\n  #state: WebAuthnState<T>;\n\n  /**\n   * @hidden Use the factory methods instead.\n   *\n   * Initializes the identity in either:\n   * - **pending** state (existing-credential path; public key not yet known), or\n   * - **initialized** state (new-credential path; public key known immediately).\n   *\n   * @private\n   */\n  private constructor({\n    onProgress,\n    ...args\n  }: WebAuthnSignProgressArgs &\n    (\n      | InitWebAuthnNewCredentialArgs\n      | Pick<CreateWebAuthnIdentityWithExistingCredentialArgs, 'retrievePublicKey'>\n    )) {\n    super();\n\n    this.#onSignProgress = onProgress;\n\n    if ('retrievePublicKey' in args) {\n      const {retrievePublicKey} = args;\n\n      this.#state = {\n        status: 'pending',\n        retrievePublicKey\n      };\n\n      return;\n    }\n\n    this.#state = WebAuthnIdentity.#createInitializedState({\n      credential: new WebAuthnNewCredential(args)\n    });\n  }\n\n  static #createInitializedState<T extends WebAuthnCredential>({\n    credential\n  }: {\n    credential: WebAuthnNewCredential | WebAuthnExistingCredential;\n  }): WebAuthnState<T> {\n    return {\n      status: 'initialized',\n      credential: credential as T\n    };\n  }\n\n  /**\n   * Creates a new passkey on the device and returns an initialized identity.\n   *\n   * If you chain `create` and `sign`, the user will be prompted twice to authenticate\n   * with their authenticator. You can track progress via the `onProgress` callback.\n   *\n   * @param args {@link CreateWebAuthnIdentityWithNewCredentialArgs} Options to create the passkey.\n   * @returns A {@link WebAuthnIdentity} parameterized with {@link WebAuthnNewCredential}.\n   */\n  static async createWithNewCredential({\n    passkeyOptions,\n    timeout,\n    ...restArgs\n  }: CreateWebAuthnIdentityWithNewCredentialArgs = {}): Promise<\n    WebAuthnIdentity<WebAuthnNewCredential>\n  > {\n    const credential = await navigator.credentials.create({\n      publicKey: createPasskeyOptions(passkeyOptions),\n      signal: createAbortSignal({timeout})\n    });\n\n    assertNonNullishCredential(credential);\n    assertCredentialPublicKey(credential);\n\n    const {\n      response: {attestationObject},\n      rawId\n    } = credential;\n\n    if (isNullish(attestationObject)) {\n      throw new WebAuthnIdentityNoAttestationError();\n    }\n\n    // We have to parse the attestationObject as CBOR to ultimately retrieve the public key.\n    // Similar as what's implemented in AgentJS.\n    const {authData} = Cbor.decode<{authData: Uint8Array}>(\n      arrayBufferToUint8Array(attestationObject)\n    );\n\n    const cose = _authDataToCose(authData);\n\n    return new WebAuthnIdentity<WebAuthnNewCredential>({\n      ...restArgs,\n      rawId: arrayBufferToUint8Array(rawId),\n      cose,\n      authData\n    });\n  }\n\n  /**\n   * Creates an identity for an existing passkey.\n   *\n   * @param args {@link CreateWebAuthnIdentityWithExistingCredentialArgs} Options to retrieve the passkey.\n   * @returns A {@link WebAuthnIdentity} parameterized with {@link WebAuthnExistingCredential}.\n   */\n  // We use async for consistency reason and because it might be future prone.\n  // eslint-disable-next-line require-await\n  static async createWithExistingCredential(\n    args: CreateWebAuthnIdentityWithExistingCredentialArgs\n  ): Promise<WebAuthnIdentity<WebAuthnExistingCredential>> {\n    return new WebAuthnIdentity<WebAuthnExistingCredential>(args);\n  }\n\n  /**\n   * Returns the credential\u2019s public key.\n   *\n   * @returns {PublicKey}\n   * @throws WebAuthnIdentityCredentialNotInitializedError if the identity has not signed\n   * any request yet.\n   */\n  override getPublicKey(): PublicKeyWithToRaw {\n    assertWebAuthnStateInitialized(this.#state);\n\n    const {credential} = this.#state;\n\n    return credential.getPublicKey();\n  }\n\n  /**\n   * Returns the concrete credential wrapper for this identity.\n   *\n   * For identities created with:\n   * - `createWithNewCredential` \u2192 {@link WebAuthnNewCredential}\n   * - `createWithExistingCredential` \u2192 {@link WebAuthnExistingCredential}\n   *\n   * @throws WebAuthnIdentityCredentialNotInitializedError if the identity has not signed\n   * any request yet.\n   */\n  getCredential(): T {\n    assertWebAuthnStateInitialized(this.#state);\n\n    const {credential} = this.#state;\n\n    return credential;\n  }\n\n  /**\n   * Signs an arbitrary blob using the platform authenticator.\n   *\n   * @param blob Bytes to sign (used as the WebAuthn challenge).\n   * @returns {Promise<Signature>} CBOR-encoded signature payload.\n   */\n  override async sign(blob: Uint8Array): Promise<Signature> {\n    // 1. Request user credential (navigator.credentials.get)\n    const requestCredential = async (): Promise<PublicKeyCredential> => {\n      const credential = await retrieveCredentials({\n        challenge: blob,\n        ...(this.#state.status === 'initialized' && {\n          credentialIds: [this.#state.credential.getCredentialId()]\n        })\n      });\n\n      assertNonNullishCredential(credential);\n      assertCredentialPublicKey(credential);\n\n      return credential;\n    };\n\n    const credential = await execute({\n      fn: requestCredential,\n      step: WebAuthnSignProgressStep.RequestingUserCredential,\n      onProgress: this.#onSignProgress\n    });\n\n    // 2. Assert credential ID if already initialized or load public key from backend and init state\n    const finalizingCredential = async () => {\n      const {rawId} = credential;\n\n      // If the state was already initialized - credentials.create - then we \"only\"\n      // assert that the rawId retrieved by credentials.get is equals to the one already known.\n      if (this.#state.status === 'initialized') {\n        if (\n          !uint8ArraysEqual({\n            a: this.#state.credential.getCredentialId(),\n            b: arrayBufferToUint8Array(rawId)\n          })\n        ) {\n          throw new WebAuthnIdentityInvalidCredentialIdError();\n        }\n\n        return;\n      }\n\n      // If the state was pending, we need to retrieve the public key for the credential\n      // that was saved during a previous sign-up\n      // because credentials.get does not provide an attestation.\n      const {retrievePublicKey} = this.#state;\n\n      const cose = await retrievePublicKey({\n        credentialId: arrayBufferToUint8Array(rawId)\n      });\n\n      this.#state = WebAuthnIdentity.#createInitializedState({\n        credential: new WebAuthnExistingCredential({\n          rawId: arrayBufferToUint8Array(rawId),\n          cose\n        })\n      });\n    };\n\n    await execute({\n      fn: finalizingCredential,\n      step: WebAuthnSignProgressStep.FinalizingCredential,\n      onProgress: this.#onSignProgress\n    });\n\n    // 3. Sign the request\n    // eslint-disable-next-line require-await\n    const encodeSignature = async (): Promise<Signature> => {\n      const {response} = credential;\n\n      const {clientDataJSON} = response;\n\n      // Only the response of type AuthenticatorAssertionResponse provides authenticatorData and signature\n      // which is the type of response we are expecting.\n      const {authenticatorData, signature} =\n        'authenticatorData' in response && 'signature' in response\n          ? (response as AuthenticatorAssertionResponse)\n          : {};\n\n      if (isNullish(authenticatorData)) {\n        throw new WebAuthnIdentityNoAuthenticatorDataError();\n      }\n\n      if (isNullish(signature)) {\n        throw new WebAuthnIdentityNoAuthenticatorDataError();\n      }\n\n      const encoded = Cbor.encode({\n        authenticator_data: authenticatorData,\n        client_data_json: new TextDecoder().decode(clientDataJSON),\n        signature: arrayBufferToUint8Array(signature)\n      });\n\n      if (isNullish(encoded)) {\n        throw new WebAuthnIdentityEncodeCborSignatureError();\n      }\n\n      // Similar as AgentJS code.\n      Object.assign(encoded, {\n        __signature__: undefined\n      });\n\n      return encoded as Signature;\n    };\n\n    return await execute({\n      fn: encodeSignature,\n      step: WebAuthnSignProgressStep.Signing,\n      onProgress: this.#onSignProgress\n    });\n  }\n}\n", "// See https://www.iana.org/assignments/cose/cose.xhtml#algorithms for a complete\n// list of these algorithms. We only list the ones we support here.\n//\n// According Google tutorial, https://web.dev/articles/passkey-registration, specifying\n// support for ECDSA with P-256 (-7) and RSA PKCS#1 (-257) gives complete coverage.\nexport const PUBLIC_KEY_COSE_ALGORITHMS = {\n  ECDSA_WITH_SHA256: -7,\n  RSA_WITH_SHA256: -257\n};\n\nexport const AUTHENTICATOR_ABORT_TIMEOUT = 60000;\n", "import {PUBLIC_KEY_COSE_ALGORITHMS} from './_constants';\nimport {WebAuthnIdentityHostnameError} from './errors';\nimport type {CreatePasskeyOptions, PasskeyOptions} from './types/passkey';\n\nconst randomValue = (): BufferSource => window.crypto.getRandomValues(new Uint8Array(16));\n\n/**\n * When creating a passkey, the challenge can simply be a random value.\n * Since the server doesn\u2019t need to verify the authenticity of the key,\n * it doesn\u2019t have to generate the challenge itself.\n *\n * In contrast, when signing a request with our credentials,\n * the request itself becomes the data (blob), the challenge, that must be signed.\n */\nconst createChallenge = (): BufferSource => randomValue();\n\n/**\n * The user ID is set to a random value, which holds little relevance\n * for the end user beyond being unique.\n *\n * Ultimately, once signed in, the user's actual identifier will be\n * the public key (principal) of the identity used to interact with the IC.\n */\nconst createUserId = (): BufferSource => randomValue();\n\nconst hostname = (): string => {\n  const {\n    location: {href}\n  } = window;\n\n  try {\n    const {hostname} = new URL(href);\n    return hostname;\n  } catch {\n    throw new WebAuthnIdentityHostnameError();\n  }\n};\n\nconst relyingPartyId = ({appId}: Pick<PasskeyOptions, 'appId'>): string => appId?.id ?? hostname();\n\nexport const createPasskeyOptions = ({\n  appId,\n  user: userOptions\n}: CreatePasskeyOptions = {}): PublicKeyCredentialCreationOptions => {\n  const {\n    document: {title: name}\n  } = window;\n\n  const relyingParty = (): Pick<PublicKeyCredentialCreationOptions, 'rp'> => ({\n    rp: {\n      // Note: deprecated in WebAuthn L3\n      name: appId?.name ?? name,\n      id: relyingPartyId({appId})\n    }\n  });\n\n  const user = (): Pick<PublicKeyCredentialCreationOptions, 'user'> => ({\n    user: {\n      id: createUserId(),\n      name: userOptions?.name ?? userOptions?.displayName ?? name,\n      displayName: userOptions?.displayName ?? name\n    }\n  });\n\n  return {\n    // We want to receive the attestation statement as generated by the authenticator\n    attestation: 'direct',\n    challenge: createChallenge(),\n    ...relyingParty(),\n    ...user(),\n    pubKeyCredParams: Object.values(PUBLIC_KEY_COSE_ALGORITHMS).map((algorithm) => ({\n      type: 'public-key',\n      alg: algorithm\n    })),\n    excludeCredentials: [],\n    authenticatorSelection: {\n      // At least for now, we want a simplified flow and therefore indicates that we want a\n      // platform authenticator ((an authenticator embedded to the platform device).\n      authenticatorAttachment: 'platform',\n      userVerification: 'preferred',\n      // Along with requireResidentKey, make passkey discoverable,\n      residentKey: 'required',\n      requireResidentKey: true\n    }\n  };\n};\n\nexport const retrievePasskeyOptions = (\n  options: PasskeyOptions = {}\n): Omit<PublicKeyCredentialRequestOptions, 'challenge'> => ({\n  rpId: relyingPartyId(options),\n  allowCredentials: [],\n  userVerification: 'required'\n});\n", "import type {WebAuthnSignProgress, WebAuthnSignProgressArgs} from './types/progress';\n\nexport const execute = async <T>({\n  fn,\n  step,\n  onProgress\n}: {\n  fn: () => Promise<T>;\n} & Pick<WebAuthnSignProgress, 'step'> &\n  WebAuthnSignProgressArgs): Promise<T> => {\n  onProgress?.({\n    step,\n    state: 'in_progress'\n  });\n\n  try {\n    const result = await fn();\n\n    onProgress?.({\n      step,\n      state: 'success'\n    });\n\n    return result;\n  } catch (err: unknown) {\n    onProgress?.({\n      step,\n      state: 'error'\n    });\n\n    throw err;\n  }\n};\n", "/**\n * Progress steps in the WebAuthn signing flow.\n */\nexport enum WebAuthnSignProgressStep {\n  /** Calling `navigator.credentials.get` to obtain an assertion. */\n  RequestingUserCredential,\n  /** Verifying/initializing the credential (e.g., ID match, loading public key). */\n  FinalizingCredential,\n  /** Producing the signature and encoding the result. */\n  Signing\n}\n\n/**\n * Status of the current step.\n */\nexport type WebAuthnSignProgressState = 'in_progress' | 'success' | 'error';\n\n/**\n * Payload emitted on progress updates.\n */\nexport interface WebAuthnSignProgress {\n  /** The step being executed. */\n  step: WebAuthnSignProgressStep;\n  /** State of that step. */\n  state: WebAuthnSignProgressState;\n}\n\n/**\n * Callback invoked on each progress update.\n */\nexport type WebAuthnSignProgressFn = (progress: WebAuthnSignProgress) => void;\n\n/**\n * Optional handler for progress updates.\n */\nexport interface WebAuthnSignProgressArgs {\n  onProgress?: WebAuthnSignProgressFn;\n}\n", "import {nonNullish} from '@junobuild/utils';\n\n/**\n * Checks if a user-verifying platform authenticator (passkeys) is available on this device / browser.\n *\n * Returns `true` when:\n * 1) `window.PublicKeyCredential` exists, and\n * 2) the browser reports a user-verifying **platform** authenticator is available\n *    (e.g., Touch ID, Windows Hello, Android biometrics/PIN).\n *\n * @returns {Promise<boolean>} `true` if an authenticator is available, otherwise `false`.\n */\nexport const isWebAuthnAvailable = async (): Promise<boolean> => {\n  if (\n    nonNullish(window.PublicKeyCredential) &&\n    'isUserVerifyingPlatformAuthenticatorAvailable' in PublicKeyCredential\n  ) {\n    return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();\n  }\n\n  return false;\n};\n", "import {isWebAuthnAvailable} from '@junobuild/ic-client/webauthn';\nimport type {Asset, AssetEncoding, AssetKey, EncodingType, Storage} from '@junobuild/storage';\nimport {assertNonNullish, nonNullish} from '@junobuild/utils';\nimport {initAuthTimeoutWorker} from './auth/services/auth-timout.services';\nimport {initAuthBroadcastListener} from './auth/services/broadcast.services';\nimport {loadAuth} from './auth/services/load.services';\nimport {AuthStore} from './auth/stores/auth.store';\nimport type {User} from './auth/types/user';\nimport {EnvStore} from './core/stores/env.store';\nimport type {Environment, UserEnvironment} from './core/types/env';\nimport type {Unsubscribe} from './core/types/subscription';\nimport {envContainer, envSatelliteId} from './core/utils/window.env.utils';\nexport * from './auth/providers/internet-identity.providers';\nexport {getIdentityOnce, unsafeIdentity} from './auth/services/identity.services';\nexport {handleRedirectCallback} from './auth/services/redirect.services';\nexport {signIn} from './auth/services/sign-in.services';\nexport {signOut} from './auth/services/sign-out.services';\nexport {signUp} from './auth/services/sign-up.services';\nexport type * from './auth/types/auth';\nexport * from './auth/types/auth-client';\nexport type * from './auth/types/dev-identity';\nexport * from './auth/types/errors';\nexport type * from './auth/types/github';\nexport type * from './auth/types/google';\nexport type * from './auth/types/internet-identity';\nexport type * from './auth/types/progress';\nexport type * from './auth/types/provider';\nexport type * from './auth/types/user';\nexport * from './auth/types/webauthn';\nexport * from './auth/utils/user.utils';\nexport type * from './core/types/env';\nexport {ListOrder, ListPaginate, ListParams, ListResults} from './core/types/list';\nexport type * from './core/types/satellite';\nexport type * from './core/types/subscription';\nexport type * from './core/types/utility';\nexport * from './datastore/services/doc.services';\nexport type * from './datastore/types/doc';\nexport * from './functions/services/functions.services';\nexport * from './storage/services/storage.services';\nexport type * from './storage/types/storage';\nexport {isWebAuthnAvailable};\nexport type {Asset, AssetEncoding, AssetKey, EncodingType, Storage};\n\nconst parseEnv = (userEnv?: UserEnvironment): Environment => {\n  const satelliteId = userEnv?.satelliteId ?? envSatelliteId();\n\n  assertNonNullish(satelliteId, 'Satellite ID is not configured. Juno cannot be initialized.');\n\n  const container = userEnv?.container ?? envContainer();\n\n  return {\n    satelliteId,\n    internetIdentityId: userEnv?.internetIdentityId,\n    workers: userEnv?.workers,\n    syncTabs: userEnv?.syncTabs,\n    container\n  };\n};\n\n/**\n * @deprecated Use {@link initSatellite} instead.\n */\nexport const initJuno = (userEnv?: UserEnvironment): Promise<Unsubscribe[]> =>\n  initSatellite(userEnv);\n\n/**\n * Initializes a Satellite with the provided optional environment parameters.\n * If no environment is provided, the variables injected by the Vite or NextJS plugins will be used.\n * @param {UserEnvironment} [userEnv] - The optional user environment configuration.\n * @returns {Promise<Unsubscribe[]>} A promise that resolves to an array of unsubscribe functions.\n */\nexport const initSatellite = async (userEnv?: UserEnvironment): Promise<Unsubscribe[]> => {\n  const env = parseEnv(userEnv);\n\n  EnvStore.getInstance().set(env);\n\n  await loadAuth();\n\n  const authSubscribe =\n    env.workers?.auth !== undefined ? initAuthTimeoutWorker(env.workers.auth) : undefined;\n\n  const syncTabsSubscribe = env.syncTabs === false ? undefined : initAuthBroadcastListener();\n\n  return [\n    ...(nonNullish(authSubscribe) ? [authSubscribe] : []),\n    ...(nonNullish(syncTabsSubscribe) ? [syncTabsSubscribe] : [])\n  ];\n};\n\n/**\n * Subscribes to authentication state changes. i.e. each time a user signs in or signs out, the callback will be triggered.\n * @param {function(User | null): void} callback - The callback function to execute when the authentication state changes.\n * @returns {Unsubscribe} A function to unsubscribe from the authentication state changes.\n */\nexport const onAuthStateChange = (callback: (authUser: User | null) => void): Unsubscribe =>\n  AuthStore.getInstance().subscribe(callback);\n\n/**\n * @deprecated Use {@link onAuthStateChange} instead.\n */\nexport const authSubscribe = onAuthStateChange;\nexport {InternetIdentityConfig, InternetIdentityDomain} from './auth/types/internet-identity';\n", "import {isNullish} from '@junobuild/utils';\nimport type {EnvironmentWorker} from '../../core/types/env';\nimport type {Unsubscribe} from '../../core/types/subscription';\nimport {AuthStore} from '../stores/auth.store';\nimport type {PostMessage, PostMessageDataResponseAuth} from '../types/post-message';\nimport type {User} from '../types/user';\nimport {emit} from '../utils/events.utils';\nimport {signOut} from './sign-out.services';\n\nexport const initAuthTimeoutWorker = (auth: EnvironmentWorker): Unsubscribe => {\n  const workerUrl = auth === true ? '/workers/auth.worker.js' : auth;\n  const worker = new Worker(workerUrl);\n\n  const timeoutSignOut = async () => {\n    emit({message: 'junoSignOutAuthTimer'});\n    await signOut();\n  };\n\n  worker.onmessage = async ({data}: MessageEvent<PostMessage<PostMessageDataResponseAuth>>) => {\n    const {msg, data: value} = data;\n\n    switch (msg) {\n      case 'junoSignOutAuthTimer':\n        await timeoutSignOut();\n        return;\n      case 'junoDelegationRemainingTime':\n        emit({message: 'junoDelegationRemainingTime', detail: value?.authRemainingTime});\n    }\n  };\n\n  return AuthStore.getInstance().subscribe((user: User | null) => {\n    if (isNullish(user)) {\n      worker.postMessage({msg: 'junoStopAuthTimer'});\n      return;\n    }\n\n    worker.postMessage({msg: 'junoStartAuthTimer'});\n  });\n};\n", "export abstract class Store<T> {\n  private callbacks: {id: symbol; callback: (data: T | null) => void}[] = [];\n\n  protected populate(data: T | null) {\n    this.callbacks.forEach(({callback}: {id: symbol; callback: (data: T | null) => void}) =>\n      callback(data)\n    );\n  }\n\n  subscribe(callback: (data: T | null) => void): () => void {\n    const callbackId = Symbol();\n    this.callbacks.push({id: callbackId, callback});\n\n    return () =>\n      (this.callbacks = this.callbacks.filter(\n        ({id}: {id: symbol; callback: (data: T | null) => void}) => id !== callbackId\n      ));\n  }\n}\n", "import {Store} from '../../core/stores/_store';\nimport type {Unsubscribe} from '../../core/types/subscription';\nimport type {User} from '../types/user';\n\nexport class AuthStore extends Store<User | null> {\n  private static instance: AuthStore;\n\n  private authUser: User | null = null;\n\n  private constructor() {\n    super();\n  }\n\n  static getInstance() {\n    if (!AuthStore.instance) {\n      AuthStore.instance = new AuthStore();\n    }\n    return AuthStore.instance;\n  }\n\n  set(authUser: User | null) {\n    this.authUser = authUser;\n\n    this.populate(authUser);\n  }\n\n  get(): User | null {\n    return this.authUser;\n  }\n\n  override subscribe(callback: (data: User | null) => void): Unsubscribe {\n    const unsubscribe: () => void = super.subscribe(callback);\n\n    callback(this.authUser);\n\n    return unsubscribe;\n  }\n\n  reset() {\n    this.authUser = null;\n\n    this.populate(this.authUser);\n  }\n}\n", "export const emit = <T>({message, detail}: {message: string; detail?: T | undefined}) => {\n  const $event: CustomEvent<T> = new CustomEvent<T>(message, {detail, bubbles: true});\n  document.dispatchEvent($event);\n};\n", "import {Actor, type ActorMethod, type ActorSubclass} from '@icp-sdk/core/agent';\nimport type {IDL} from '@icp-sdk/core/candid';\nimport {isNullish} from '@junobuild/utils';\nimport type {ActorKey} from '../types/actor';\nimport type {SatelliteContext} from '../types/satellite';\nimport {AgentStore} from './agent.store';\n\ntype ActorParams = {\n  idlFactory: IDL.InterfaceFactory;\n} & Required<Pick<SatelliteContext, 'satelliteId' | 'identity'>> &\n  Pick<SatelliteContext, 'container'>;\n\ntype ActorRecord = Record<string, ActorMethod>;\n\nexport class ActorStore {\n  private static instance: ActorStore;\n\n  #actors: Record<string, ActorSubclass<ActorRecord>> | undefined | null = undefined;\n\n  private constructor() {}\n\n  static getInstance() {\n    if (isNullish(ActorStore.instance)) {\n      ActorStore.instance = new ActorStore();\n    }\n    return ActorStore.instance;\n  }\n\n  async getActor<T = ActorRecord>({\n    satelliteId,\n    identity,\n    actorKey,\n    ...rest\n  }: ActorParams & {actorKey: ActorKey}): Promise<ActorSubclass<T>> {\n    const key = `${actorKey}#${identity.getPrincipal().toText()}#${satelliteId};`;\n\n    if (isNullish(this.#actors) || isNullish(this.#actors[key])) {\n      const actor = await this.createActor({satelliteId, identity, ...rest});\n\n      this.#actors = {\n        ...(this.#actors ?? {}),\n        [key]: actor\n      };\n\n      return actor as ActorSubclass<T>;\n    }\n\n    return this.#actors[key] as ActorSubclass<T>;\n  }\n\n  reset() {\n    this.#actors = null;\n  }\n\n  private async createActor<T = ActorRecord>({\n    idlFactory,\n    satelliteId: canisterId,\n    ...rest\n  }: ActorParams): Promise<ActorSubclass<T>> {\n    const agent = await AgentStore.getInstance().getAgent(rest);\n\n    return Actor.createActor(idlFactory, {\n      agent,\n      canisterId\n    });\n  }\n}\n", "import type {Agent, HttpAgent} from '@icp-sdk/core/agent';\nimport {isNullish} from '@junobuild/utils';\nimport {type CreateAgentParams, createAgent} from './_agent.factory';\n\nexport class AgentStore {\n  private static instance: AgentStore;\n\n  #agents: Record<string, HttpAgent> | undefined | null = undefined;\n\n  private constructor() {}\n\n  static getInstance() {\n    if (isNullish(AgentStore.instance)) {\n      AgentStore.instance = new AgentStore();\n    }\n    return AgentStore.instance;\n  }\n\n  async getAgent({identity, ...rest}: CreateAgentParams): Promise<Agent> {\n    const key = identity.getPrincipal().toText();\n\n    if (isNullish(this.#agents) || isNullish(this.#agents[key])) {\n      const agent = await createAgent({identity, ...rest});\n\n      this.#agents = {\n        ...(this.#agents ?? {}),\n        [key]: agent\n      };\n\n      return agent;\n    }\n\n    return this.#agents[key];\n  }\n\n  reset() {\n    this.#agents = null;\n  }\n}\n", "import {HttpAgent} from '@icp-sdk/core/agent';\nimport {nonNullish} from '@junobuild/utils';\nimport {DOCKER_CONTAINER_URL} from '../constants/container.constants';\nimport type {SatelliteContext} from '../types/satellite';\n\nexport type CreateAgentParams = Required<Pick<SatelliteContext, 'identity'>> &\n  Pick<SatelliteContext, 'container'>;\n\nexport const createAgent = async ({identity, container}: CreateAgentParams): Promise<HttpAgent> => {\n  const localActor = nonNullish(container) && container !== false;\n\n  const host = localActor\n    ? container === true\n      ? DOCKER_CONTAINER_URL\n      : container\n    : 'https://icp-api.io';\n\n  const shouldFetchRootKey = nonNullish(container);\n\n  return await HttpAgent.create({\n    identity,\n    shouldFetchRootKey,\n    host\n  });\n};\n", "export const DOCKER_CONTAINER_URL = 'http://127.0.0.1:5987';\nexport const DOCKER_INTERNET_IDENTITY_ID = 'rdmx6-jaaaa-aaaaa-aaadq-cai';\n", "import {\n  AuthClient,\n  IdbStorage,\n  KEY_STORAGE_DELEGATION,\n  KEY_STORAGE_KEY\n} from '@icp-sdk/auth/client';\nimport type {DelegationChain, ECDSAKeyIdentity} from '@icp-sdk/core/identity';\nimport {isNullish} from '@junobuild/utils';\n\nexport class AuthClientStore {\n  static #instance: AuthClientStore | undefined;\n\n  #authClient: AuthClient | undefined | null;\n\n  private constructor() {}\n\n  static getInstance(): AuthClientStore {\n    if (isNullish(this.#instance)) {\n      this.#instance = new AuthClientStore();\n    }\n\n    return this.#instance;\n  }\n\n  createAuthClient = async (): Promise<AuthClient> => {\n    this.#authClient = await AuthClient.create({\n      idleOptions: {\n        disableIdle: true,\n        disableDefaultIdleCallback: true\n      }\n    });\n\n    return this.#authClient;\n  };\n\n  /**\n   * Since icp-js-core persists identity keys in IndexedDB by default,\n   * they could be tampered with and affect the next login.\n   * To ensure each session starts clean and safe, we clear the stored keys\n   * before creating a new AuthClient.\n   *\n   * We also remove the delegation because `AuthClient.create` does not\n   * overwrite or discard an existing delegation \u2014 it reads it from storage\n   * and pairs it with whatever key is present. Once the key is cleared and\n   * a fresh one generated, the old delegation would reference a different\n   * public key, producing an ECDSA P256 signature / delegation mismatch.\n   */\n  safeCreateAuthClient = async (): Promise<AuthClient> => {\n    const storage = new IdbStorage();\n    await Promise.all([storage.remove(KEY_STORAGE_KEY), storage.remove(KEY_STORAGE_DELEGATION)]);\n\n    return await this.createAuthClient();\n  };\n\n  getAuthClient = (): AuthClient | undefined | null => this.#authClient;\n\n  logout = async (): Promise<void> => {\n    await this.#authClient?.logout();\n\n    // Reset local object otherwise next sign in (sign in - sign out - sign in) might not work out - i.e. agent-js might not recreate the delegation or identity if not resetted\n    // Technically we do not need this since we recreate the agent below. We just keep it to make the reset explicit.\n    this.#authClient = null;\n  };\n\n  setAuthClientStorage = async ({\n    delegationChain,\n    sessionKey\n  }: {\n    delegationChain: DelegationChain;\n    sessionKey: ECDSAKeyIdentity;\n  }) => {\n    const storage = new IdbStorage();\n\n    await Promise.all([\n      storage.set(KEY_STORAGE_KEY, sessionKey.getKeyPair()),\n      storage.set(KEY_STORAGE_DELEGATION, JSON.stringify(delegationChain.toJSON()))\n    ]);\n  };\n}\n", "import {ActorStore} from '../../core/stores/actor.store';\nimport {AgentStore} from '../../core/stores/agent.store';\nimport {AuthClientStore} from '../stores/auth-client.store';\nimport {AuthStore} from '../stores/auth.store';\nimport type {SignOutOptions} from '../types/auth';\n\n/**\n * Signs out the current user.\n * @returns {Promise<void>} A promise that resolves when the sign-out process is complete.\n */\nexport const signOut = async (options?: SignOutOptions): Promise<void> => {\n  await resetAuth();\n\n  // Recreate an HttpClient immediately because next sign-in, if window is not reloaded, would fail if the agent is created within the process.\n  // For example, Safari blocks the Internet Identity (II) window if the agent is created during the interaction.\n  // Agent-js must be created either globally or at least before performing a sign-in.\n  // We proceed with this reset regardless of the window reloading. This way we ensure it is reset not matter what.\n  await AuthClientStore.getInstance().createAuthClient();\n\n  if (options?.windowReload === false) {\n    return;\n  }\n\n  window.location.reload();\n};\n\n/**\n * \u2139\uFE0F Exposed for testing purpose only. Should not be leaked to consumer or used by the library.\n */\nexport const resetAuth = async () => {\n  await AuthClientStore.getInstance().logout();\n\n  AuthStore.getInstance().reset();\n\n  ActorStore.getInstance().reset();\n  AgentStore.getInstance().reset();\n};\n", "import {isNullish, nonNullish, notEmptyString} from '@junobuild/utils';\nimport type {BroadcastData} from '../types/auth-broadcast';\n\n// If the user has more than one tab open in the same browser,\n// there could be a mismatch of the cached delegation chain vs the identity key of the `authClient` object.\n// This causes the `authClient` to be unable to correctly sign calls, raising Trust Errors.\n// To mitigate this, we use a `BroadcastChannel` to notify other tabs when a login has occurred, so that they can sync their `authClient` object.\nexport class AuthBroadcastChannel {\n  static #instance: AuthBroadcastChannel | null;\n\n  readonly #bc: BroadcastChannel;\n  readonly #emitterId: string;\n\n  static readonly CHANNEL_NAME: BroadcastChannel['name'] = 'juno_core_auth_channel';\n  static readonly MESSAGE_LOGIN_SUCCESS = 'authClientLoginSuccess';\n\n  private constructor() {\n    this.#bc = new BroadcastChannel(AuthBroadcastChannel.CHANNEL_NAME);\n    this.#emitterId = window.crypto.randomUUID();\n  }\n\n  static getInstance(): AuthBroadcastChannel {\n    if (isNullish(this.#instance)) {\n      this.#instance = new AuthBroadcastChannel();\n    }\n\n    return this.#instance;\n  }\n\n  onLoginSuccess = (handler: () => Promise<void>) => {\n    const {\n      location: {origin}\n    } = window;\n\n    this.#bc.onmessage = async ({origin: eventOrigin, data}) => {\n      if (\n        eventOrigin === origin &&\n        nonNullish(data) &&\n        (data as BroadcastData).msg === 'authClientLoginSuccess' &&\n        notEmptyString((data as BroadcastData).emitterId) &&\n        data.emitterId !== this.#emitterId\n      ) {\n        await handler();\n      }\n    };\n  };\n\n  destroy = () => {\n    this.#bc.close();\n    AuthBroadcastChannel.#instance = null;\n  };\n\n  postLoginSuccess = () => {\n    const data: BroadcastData = {\n      emitterId: this.#emitterId,\n      msg: AuthBroadcastChannel.MESSAGE_LOGIN_SUCCESS\n    };\n\n    this.#bc.postMessage(data);\n  };\n\n  get __test__only__emitter_id__(): string {\n    return this.#emitterId;\n  }\n}\n", "import type {Environment} from '../types/env';\nimport {Store} from './_store';\n\nexport class EnvStore extends Store<Environment | undefined> {\n  private static instance: EnvStore;\n\n  private env: Environment | undefined | null;\n\n  private constructor() {\n    super();\n  }\n\n  static getInstance() {\n    if (!EnvStore.instance) {\n      EnvStore.instance = new EnvStore();\n    }\n    return EnvStore.instance;\n  }\n\n  set(env: Environment | undefined) {\n    this.env = env;\n\n    this.populate(env);\n  }\n\n  get(): Environment | undefined | null {\n    return this.env;\n  }\n\n  reset() {\n    this.env = null;\n  }\n\n  override subscribe(callback: (data: Environment | null | undefined) => void): () => void {\n    const unsubscribe: () => void = super.subscribe(callback);\n\n    callback(this.env);\n\n    return unsubscribe;\n  }\n}\n", "import {EnvStore} from '../../core/stores/env.store';\nimport {AuthBroadcastChannel} from '../providers/_auth-broadcast.providers';\nimport {AuthClientStore} from '../stores/auth-client.store';\n\n/**\n * Initializes a new `AuthClient`, checks authentication state,\n * and executes the provided function if already authenticated.\n *\n * - Always creates a fresh `AuthClient` using {@link createAuthClient}.\n * - If the client is **not authenticated**, it resets the client via {@link safeCreateAuthClient}\n *   to ensure a clean session.\n * - If authenticated, it runs the given async function `fn`.\n *\n * @param {Object} params\n * @param {() => Promise<void>} params.fn - The asynchronous function to execute when authenticated.\n * @param {boolean} params.syncTabsOnSuccess - Broadcast the successful authentication to other tabs.\n *\n * @returns {Promise<void>} Resolves when authentication is handled and the provided function is executed (if applicable).\n */\nexport const authenticateWithAuthClient = async ({\n  fn,\n  syncTabsOnSuccess\n}: {\n  fn: () => Promise<void>;\n  syncTabsOnSuccess: boolean;\n}) => {\n  const {authenticated} = await authenticate({fn});\n\n  if (!authenticated) {\n    return;\n  }\n\n  if (!syncTabsOnSuccess) {\n    return;\n  }\n\n  // Even though the parameter is called syncTabsOnSuccess we perform the check\n  // on the environment variable here. This way we do not have to duplicate the code.\n  const env = EnvStore.getInstance().get();\n\n  if (env?.syncTabs === false) {\n    return;\n  }\n\n  syncTabs();\n};\n\n/**\n * Creates a new `AuthClient` instance and checks authentication state,\n * then forwards the result to the provided callback function.\n *\n * Unlike {@link authenticateWithAuthClient}, this function does **not**\n * reuse or reset the existing `AuthClient`, and does **not** perform broadcast logic.\n * It simply ensures a fresh client is always created and reports whether it is authenticated.\n *\n * @param {Object} params\n * @param {(params: {authenticated: boolean}) => Promise<void>} params.fn\n *   The function to execute with the result of the authentication status.\n *\n * @returns {Promise<void>} Resolves once the callback has been invoked.\n */\nexport const authenticateWithNewAuthClient = async ({\n  fn\n}: {\n  fn: (params: {authenticated: boolean}) => Promise<void>;\n}) => {\n  const {createAuthClient} = AuthClientStore.getInstance();\n\n  const authClient = await createAuthClient();\n\n  const isAuthenticated = await authClient.isAuthenticated();\n\n  await fn({authenticated: isAuthenticated});\n};\n\nconst authenticate = async ({fn}: {fn: () => Promise<void>}): Promise<{authenticated: boolean}> => {\n  const {createAuthClient, safeCreateAuthClient} = AuthClientStore.getInstance();\n\n  const authClient = await createAuthClient();\n\n  const isAuthenticated = await authClient.isAuthenticated();\n\n  if (!isAuthenticated) {\n    await safeCreateAuthClient();\n    return {authenticated: false};\n  }\n\n  await fn();\n\n  return {authenticated: true};\n};\n\nconst syncTabs = () => {\n  try {\n    // If the user has more than one tab open in the same browser,\n    // there could be a mismatch of the cached delegation chain vs the identity key of the `authClient` object.\n    // This causes the `authClient` to be unable to correctly sign calls, raising Trust Errors.\n    // To mitigate this, we use a BroadcastChannel to notify other tabs when a login has occurred, so that they can sync their `authClient` object.\n    const bc = AuthBroadcastChannel.getInstance();\n    bc.postLoginSuccess();\n  } catch (err: unknown) {\n    // We don't really care if the broadcast channel fails to open or if it fails to post messages.\n    // This is a non-critical feature that improves the UX when the app is open in multiple tabs.\n    // We just print a warning in the console for debugging purposes.\n    console.warn('Auth BroadcastChannel posting failed', err);\n  }\n};\n", "export const isSatelliteError = ({error, type}: {error: unknown; type: string}): boolean => {\n  if (typeof error === 'string') {\n    return error.includes(type);\n  }\n\n  if (error instanceof Error) {\n    return error.message.includes(type);\n  }\n\n  return false;\n};\n", "export const JUNO_CDN_PROPOSALS_ERROR_CANNOT_SUBMIT = 'juno.cdn.proposals.error.cannot_submit';\nexport const JUNO_CDN_PROPOSALS_ERROR_CANNOT_SUBMIT_INVALID_STATUS =\n  'juno.cdn.proposals.error.cannot_submit_invalid_status';\n\nexport const JUNO_CDN_PROPOSALS_ERROR_CANNOT_REJECT = 'juno.cdn.proposals.error.cannot_reject';\nexport const JUNO_CDN_PROPOSALS_ERROR_CANNOT_REJECT_INVALID_STATUS =\n  'juno.cdn.proposals.error.cannot_reject_invalid_status';\n\nexport const JUNO_CDN_PROPOSALS_ERROR_CANNOT_COMMIT = 'juno.cdn.proposals.error.cannot_commit';\nexport const JUNO_CDN_PROPOSALS_ERROR_CANNOT_COMMIT_INVALID_STATUS =\n  'juno.cdn.proposals.error.cannot_commit_invalid_status';\n\nexport const JUNO_CDN_PROPOSALS_ERROR_INVALID_HASH = 'juno.cdn.proposals.error.invalid_hash';\n\nexport const JUNO_CDN_PROPOSALS_ERROR_UNKNOWN_TYPE = 'juno.cdn.proposals.error.unknown_type';\n\nexport const JUNO_CDN_PROPOSALS_ERROR_NOT_CONTENT_CHUNKS_AT_INDEX =\n  'juno.cdn.proposals.error.no_content_chunks_at_index';\n\nexport const JUNO_CDN_PROPOSALS_ERROR_EMPTY_ASSETS = 'juno.cdn.proposals.error.empty_assets';\nexport const JUNO_CDN_PROPOSALS_ERROR_CANNOT_DELETE_ASSETS =\n  'juno.cdn.proposals.error.cannot_delete_assets';\nexport const JUNO_CDN_PROPOSALS_ERROR_CANNOT_DELETE_ASSETS_INVALID_STATUS =\n  'juno.cdn.proposals.error.cannot_delete_assets_invalid_status';\n\nexport const JUNO_CDN_PROPOSALS_ERROR_NEXT_ID_CONVERT = 'juno.cdn.proposals.error.next_id_convert';\nexport const JUNO_CDN_PROPOSALS_ERROR_NEXT_ID_OVERFLOW =\n  'juno.cdn.proposals.error.next_id_overflow';\n\nexport const JUNO_CDN_STORAGE_ERROR_CANNOT_INSERT_ASSET_UNKNOWN_REFERENCE_ID =\n  'juno.cdn.storage.error.cannot_insert_asset_unknown_reference_id';\nexport const JUNO_CDN_STORAGE_ERROR_CANNOT_GET_ASSET_UNKNOWN_REFERENCE_ID =\n  'juno.cdn.storage.error.cannot_get_asset_unknown_reference_id';\nexport const JUNO_CDN_STORAGE_ERROR_CANNOT_INSERT_ASSET_ENCODING_UNKNOWN_REFERENCE_ID =\n  'juno.cdn.storage.error.cannot_insert_asset_encoding_unknown_reference_id';\n\nexport const JUNO_CDN_STORAGE_ERROR_NO_PROPOSAL_FOUND = 'juno.cdn.storage.error.no_proposal_found';\n\nexport const JUNO_CDN_STORAGE_ERROR_INVALID_RELEASES_PATH =\n  'juno.cdn.storage.error.invalid_releases_path';\n\nexport const JUNO_CDN_STORAGE_ERROR_MISSING_RELEASES_DESCRIPTION =\n  'juno.cdn.storage.error.missing_releases_description';\n\nexport const JUNO_CDN_STORAGE_ERROR_INVALID_RELEASES_DESCRIPTION =\n  'juno.cdn.storage.error.invalid_releases_description';\n\nexport const JUNO_CDN_STORAGE_ERROR_INVALID_COLLECTION =\n  'juno.cdn.storage.error.invalid_collection';\n", "export const JUNO_COLLECTIONS_ERROR_MODIFY_RESERVED_COLLECTION =\n  'juno.collections.error.modify_reserved_collection';\nexport const JUNO_COLLECTIONS_ERROR_RESERVED_NAME = 'juno.collections.error.reserved_name';\nexport const JUNO_COLLECTIONS_ERROR_RESERVED_COLLECTION =\n  'juno.collections.error.reserved_collection';\nexport const JUNO_COLLECTIONS_ERROR_RATE_CONFIG_ENABLED =\n  'juno.collections.error.rate_config_enabled';\nexport const JUNO_COLLECTIONS_ERROR_DELETE_PREFIX_RESERVED =\n  'juno.collections.error.prefix_deletion';\nexport const JUNO_COLLECTIONS_ERROR_COLLECTION_NOT_EMPTY = 'juno.collections.error.not_empty';\nexport const JUNO_COLLECTIONS_ERROR_COLLECTION_NOT_FOUND = 'juno.collections.error.not_found';\nexport const JUNO_COLLECTIONS_ERROR_PREFIX_RESERVED = 'juno.collections.error.prefix_reserved';\n", "export const JUNO_ERROR_NO_TIMESTAMP_PROVIDED = 'juno.error.no_timestamp_provided';\nexport const JUNO_ERROR_TIMESTAMP_OUTDATED_OR_FUTURE = 'juno.error.timestamp_outdated_or_future';\nexport const JUNO_ERROR_NO_VERSION_PROVIDED = 'juno.error.no_version_provided';\nexport const JUNO_ERROR_VERSION_OUTDATED_OR_FUTURE = 'juno.error.version_outdated_or_future';\n\nexport const JUNO_DATASTORE_ERROR_CANNOT_WRITE = 'juno.datastore.error.cannot_write';\nexport const JUNO_DATASTORE_ERROR_CANNOT_READ = 'juno.datastore.error.cannot_read';\n\nexport const JUNO_STORAGE_ERROR_UPLOAD_NOT_ALLOWED = 'juno.storage.error.upload_not_allowed';\nexport const JUNO_STORAGE_ERROR_SET_NOT_ALLOWED = 'juno.storage.error.set_not_allowed';\nexport const JUNO_STORAGE_ERROR_CANNOT_COMMIT_INVALID_COLLECTION =\n  'juno.storage.error.cannot_commit_invalid_collection';\nexport const JUNO_STORAGE_ERROR_CANNOT_COMMIT_BATCH = 'juno.storage.error.cannot_commit_batch';\nexport const JUNO_STORAGE_ERROR_ASSET_NOT_FOUND = 'juno.storage.error.asset_not_found';\nexport const JUNO_STORAGE_ERROR_CANNOT_READ_ASSET = 'juno.storage.error.cannot_read_asset';\nexport const JUNO_STORAGE_ERROR_UPLOAD_PATH_COLLECTION_PREFIX =\n  'juno.storage.error.upload_path_collection_prefix';\nexport const JUNO_STORAGE_ERROR_RESERVED_ASSET = 'juno.storage.error.reserved_asset';\nexport const JUNO_STORAGE_ERROR_BATCH_NOT_FOUND = 'juno.storage.error.batch_not_found';\nexport const JUNO_STORAGE_ERROR_CHUNK_NOT_FOUND = 'juno.storage.error.chunk_not_found';\nexport const JUNO_STORAGE_ERROR_CHUNK_NOT_INCLUDED_IN_BATCH =\n  'juno.storage.error.chunk_not_included_in_batch';\nexport const JUNO_STORAGE_ERROR_ASSET_MAX_ALLOWED_SIZE =\n  'juno.storage.error.asset_max_allowed_size';\n\nexport const JUNO_AUTH_ERROR_NOT_ADMIN_CONTROLLER = 'juno.auth.error.not_admin_controller';\nexport const JUNO_AUTH_ERROR_INVALID_ORIGIN = 'juno.auth.error.invalid_origin';\nexport const JUNO_AUTH_ERROR_NOT_WRITE_CONTROLLER = 'juno.auth.error.not_write_controller';\nexport const JUNO_AUTH_ERROR_NOT_CONTROLLER = 'juno.auth.error.not_controller';\nexport const JUNO_AUTH_ERROR_CALLER_NOT_ALLOWED = 'juno.auth.error.caller.not_allowed';\nexport const JUNO_AUTH_ERROR_NOT_CONFIGURED = 'juno.auth.error.not_configured';\nexport const JUNO_AUTH_ERROR_AUTOMATION_NOT_CONFIGURED =\n  'juno.auth.error.automation_not_configured';\nexport const JUNO_AUTH_ERROR_OPENID_DISABLED = 'juno.auth.error.openid_disabled';\n\nexport const JUNO_AUTOMATION_TOKEN_ERROR_MISSING_JTI = 'juno.automation.token.error.missing_jti';\nexport const JUNO_AUTOMATION_TOKEN_ERROR_TOKEN_REUSED = 'juno.automation.token.error.token_reused';\nexport const JUNO_AUTOMATION_WORKFLOW_ERROR_MISSING_REPOSITORY =\n  'juno.automation.workflow.error.missing_repository';\nexport const JUNO_AUTOMATION_WORKFLOW_ERROR_MISSING_RUN_ID =\n  'juno.automation.workflow.error.missing_run_id';\nexport const JUNO_DATASTORE_ERROR_AUTOMATION_CALLER = 'juno.datastore.error.automation.caller';\n\nexport const JUNO_DATASTORE_ERROR_USER_CANNOT_UPDATE = 'juno.datastore.error.user.cannot_update';\nexport const JUNO_DATASTORE_ERROR_USER_INVALID_DATA = 'juno.datastore.error.user.invalid_data';\nexport const JUNO_DATASTORE_ERROR_USER_CALLER_KEY = 'juno.datastore.error.user.caller_key';\nexport const JUNO_DATASTORE_ERROR_USER_KEY_NO_PRINCIPAL =\n  'juno.datastore.error.user.key_no_principal';\nexport const JUNO_DATASTORE_ERROR_USER_NOT_ALLOWED = 'juno.datastore.error.user.not_allowed';\nexport const JUNO_DATASTORE_ERROR_USER_AAGUID_INVALID_LENGTH =\n  'juno.datastore.error.user.webauthn.aaguid_invalid_length';\nexport const JUNO_DATASTORE_ERROR_USER_PROVIDER_INVALID_DATA =\n  'juno.datastore.error.user.webauthn.provider_invalid_data';\nexport const JUNO_DATASTORE_ERROR_USER_PROVIDER_WEBAUTHN_INVALID_DATA =\n  'juno.datastore.error.user.webauthn.provider_webauthn_invalid_data';\n\nexport const JUNO_DATASTORE_ERROR_USER_REGISTER_PROVIDER_INVALID_DATA =\n  'juno.datastore.error.user.register.provider_invalid_data';\n\nexport const JUNO_AUTH_ERROR_PROFILE_EMAIL_INVALID_LENGTH =\n  'juno.auth.error.profile.data.email_invalid_length';\nexport const JUNO_AUTH_ERROR_PROFILE_NAME_INVALID_LENGTH =\n  'juno.auth.error.profile.data.name_invalid_length';\nexport const JUNO_AUTH_ERROR_PROFILE_GIVEN_NAME_INVALID_LENGTH =\n  'juno.auth.error.profile.data.given_name_invalid_length';\nexport const JUNO_AUTH_ERROR_PROFILE_FAMILY_NAME_INVALID_LENGTH =\n  'juno.auth.error.profile.data.family_name_invalid_length';\nexport const JUNO_AUTH_ERROR_PROFILE_PREFERRED_USERNAME_INVALID_LENGTH =\n  'juno.auth.error.profile.data.preferred_username_invalid_length';\nexport const JUNO_AUTH_ERROR_PROFILE_LOCALE_INVALID_LENGTH =\n  'juno.auth.error.profile.data.locale_invalid_length';\nexport const JUNO_AUTH_ERROR_PROFILE_PICTURE_INVALID_URL =\n  'juno.auth.error.profile.data.picture_invalid_url';\nexport const JUNO_AUTH_ERROR_PROFILE_PICTURE_INVALID_SCHEME =\n  'juno.auth.error.profile.data.picture_invalid_scheme';\n\nexport const JUNO_DATASTORE_ERROR_USER_USAGE_CHANGE_LIMIT_REACHED =\n  'juno.datastore.error.user.usage.change_limit_reached';\nexport const JUNO_DATASTORE_ERROR_USER_USAGE_INVALID_DATA =\n  'juno.datastore.error.user.usage.invalid_data';\n\nexport const JUNO_DATASTORE_ERROR_USER_WEBAUTHN_CANNOT_UPDATE =\n  'juno.datastore.error.user.webauthn.cannot_update';\nexport const JUNO_DATASTORE_ERROR_USER_WEBAUTHN_INVALID_DATA =\n  'juno.datastore.error.user.webauthn.invalid_data';\nexport const JUNO_DATASTORE_ERROR_USER_WEBAUTHN_CALLER_KEY =\n  'juno.datastore.error.user.webauthn.caller_key';\n", "export const JUNO_ERROR_CONTROLLERS_MAX_NUMBER = 'juno.error.controllers.max_number';\nexport const JUNO_ERROR_CONTROLLERS_ANONYMOUS_NOT_ALLOWED =\n  'juno.error.controllers.anonymous_not_allowed';\nexport const JUNO_ERROR_CONTROLLERS_REVOKED_NOT_ALLOWED =\n  'juno.error.controllers.revoked_not_allowed';\nexport const JUNO_ERROR_CONTROLLERS_ADMIN_NO_EXPIRY = 'juno.error.controllers.admin_no_expire';\nexport const JUNO_ERROR_CONTROLLERS_EXPIRY_IN_PAST = 'juno.error.controllers.expiry_in_past';\n\nexport const JUNO_ERROR_MEMORY_STABLE_EXCEEDED = 'juno.error.memory.stable_exceeded';\nexport const JUNO_ERROR_MEMORY_HEAP_EXCEEDED = 'juno.error.memory.heap_exceeded';\n\nexport const JUNO_ERROR_CYCLES_DEPOSIT_BALANCE_LOW = 'juno.error.cycles.deposit_balance_low';\nexport const JUNO_ERROR_CYCLES_DEPOSIT_FAILED = 'juno.error.cycles.deposit_failed';\n\nexport const JUNO_ERROR_CANISTER_CREATE_FAILED = 'juno.error.canister.create_failed';\nexport const JUNO_ERROR_CANISTER_INSTALL_CODE_FAILED = 'juno.error.canister.install_code_failed';\n\nexport const JUNO_ERROR_SEGMENT_STOP_FAILED = 'juno.error.segment.stop_failed';\nexport const JUNO_ERROR_SEGMENT_DELETE_FAILED = 'juno.error.segment.delete_failed';\n\nexport const JUNO_ERROR_CMC_CALL_LEDGER_FAILED = 'juno.error.cmc.call_ledger_failed';\nexport const JUNO_ERROR_CMC_LEDGER_TRANSFER_FAILED = 'juno.error.cmc.ledger_transfer_failed';\nexport const JUNO_ERROR_CMC_CALL_CREATE_CANISTER_FAILED =\n  'juno.error.cmc.call_create_canister_failed';\nexport const JUNO_ERROR_CMC_CREATE_CANISTER_FAILED = 'juno.error.cmc.create_canister_failed';\nexport const JUNO_ERROR_CMC_INSTALL_CODE_FAILED = 'juno.error.cmc.install_code_failed';\n\nexport const JUNO_ERROR_INVALID_REGEX = 'juno.error.invalid_regex';\n", "import {isSatelliteError, JUNO_DATASTORE_ERROR_USER_CANNOT_UPDATE} from '@junobuild/errors';\nimport {isNullish, nonNullish} from '@junobuild/utils';\nimport {getDoc, setDoc} from '../../datastore/services/doc.services';\nimport {InitError} from '../types/errors';\nimport type {ProviderWithoutData} from '../types/provider';\nimport type {User, UserData, UserDataWithoutProviderData} from '../types/user';\nimport {getIdentity} from './identity.services';\n\ntype UserId = string;\n\nexport const initUser = async ({provider}: {provider: ProviderWithoutData}): Promise<User> => {\n  const {user, userId} = await loadUser();\n\n  // For returning users we do not need to create a user entry.\n  // Sign-in, sign-out, and sign-in again.\n  if (nonNullish(user)) {\n    return user;\n  }\n\n  try {\n    return await createUser({userId, provider});\n  } catch (error: unknown) {\n    // It's unlikely, but since updating a user is restricted to the controller,\n    // we want to guard against a rare race condition where a user attempts\n    // to create a user entry that already exists. In such a case, instead of\n    // throwing, we retry loading the user data. If that succeeds, it provides\n    // a more graceful UX.\n    //\n    // With the new flow introduced in core library v2, this scenario should\n    // never occur, but the handling remains given it was already implemented\n    // with the earlier flow where user creation could happen during init.\n    if (isSatelliteError({error, type: JUNO_DATASTORE_ERROR_USER_CANNOT_UPDATE})) {\n      const userOnCreateError = await getUser({userId});\n\n      if (nonNullish(userOnCreateError)) {\n        return userOnCreateError;\n      }\n    }\n\n    throw error;\n  }\n};\n\nexport const loadUser = async (): Promise<{userId: UserId; user: User | undefined}> => {\n  const identity = getIdentity();\n\n  if (isNullish(identity)) {\n    throw new InitError('No identity to initialize the user. Have you initialized Juno?');\n  }\n\n  const userId = identity.getPrincipal().toText();\n\n  const user = await getUser({userId});\n\n  return {\n    userId,\n    user\n  };\n};\n\nconst getUser = ({userId}: {userId: UserId}): Promise<User | undefined> =>\n  getDoc<UserData>({\n    collection: `#user`,\n    key: userId\n  });\n\nconst createUser = ({\n  userId,\n  ...rest\n}: {\n  userId: string;\n} & UserDataWithoutProviderData): Promise<User> =>\n  setDoc<UserData>({\n    collection: `#user`,\n    doc: {\n      key: userId,\n      data: rest\n    }\n  });\n", "import type {ReadOptions} from '../types/call-options';\n\n/**\n * Default options for read operations.\n *\n * For backwards compatibility and because most developers probably prioritize speed over\n * additional security when fetching read-only data from the Internet Computer,\n * read operations are performed in an uncertified way by default.\n */\nexport const DEFAULT_READ_OPTIONS: ReadOptions = {certified: false};\n", "import {AnonymousIdentity, type Identity} from '@icp-sdk/core/agent';\nimport {nonNullish} from '@junobuild/utils';\nimport {getIdentity as getAuthIdentity} from '../../auth/services/identity.services';\n\nexport const getAnyIdentity = (identity?: Identity): Identity => {\n  if (nonNullish(identity)) {\n    return identity;\n  }\n\n  return getAuthIdentity() ?? new AnonymousIdentity();\n};\n", "import type {Identity} from '@icp-sdk/core/agent';\nimport {isNullish} from '@junobuild/utils';\nimport {AuthClientStore} from '../stores/auth-client.store';\nimport {AuthStore} from '../stores/auth.store';\n\nexport const getIdentity = (): Identity | undefined =>\n  AuthClientStore.getInstance().getAuthClient()?.getIdentity();\n\n/**\n * Returns the identity of a signed-in user or an anonymous identity.\n * This function is useful for loading an identity in web workers.\n * Used to imperatively get the identity. Please be certain before using it.\n * @returns {Promise<Identity>} A promise that resolves to the identity of the user or an anonymous identity.\n */\nexport const unsafeIdentity = async (): Promise<Identity> => {\n  const {getAuthClient, createAuthClient} = AuthClientStore.getInstance();\n\n  return (getAuthClient() ?? (await createAuthClient())).getIdentity();\n};\n\n/**\n * Returns the current identity if the user is authenticated.\n *\n * \u26A0\uFE0F Use this function imperatively only. Do **not** persist the identity in global state.\n * It is intended for short-lived or one-time operations.\n *\n * Typical use case is to enable developers to implement custom features for the Internet Computer:\n * - Passing the identity to temporarily create an actor or agent to call a canister\n * - Signing a message or making a one-time authenticated call\n *\n * @returns The authenticated identity, or null if unavailable.\n */\nexport const getIdentityOnce = async (): Promise<Identity | null> => {\n  const user = AuthStore.getInstance().get();\n\n  if (isNullish(user)) {\n    return null;\n  }\n\n  const authClient = AuthClientStore.getInstance().getAuthClient();\n\n  const authenticated = (await authClient?.isAuthenticated()) ?? false;\n\n  if (!authenticated) {\n    return null;\n  }\n\n  return authClient?.getIdentity() ?? null;\n};\n", "import type {SatelliteDid} from '@junobuild/ic-client/actor';\nimport {fromNullable, isNullish, nonNullish} from '@junobuild/utils';\nimport {getSatelliteActor} from '../../core/api/actor.api';\nimport type {ActorReadParams, ActorUpdateParams} from '../../core/types/actor';\nimport type {ListParams, ListResults} from '../../core/types/list';\nimport type {ExcludeDate} from '../../core/types/utility';\nimport {toListParams} from '../../core/utils/list.utils';\nimport type {Doc} from '../types/doc';\nimport {mapData} from '../utils/data.utils';\nimport {fromDoc, toDelDoc, toSetDoc} from '../utils/doc.utils';\n\nexport const getDoc = async <D>({\n  collection,\n  key,\n  ...rest\n}: {\n  collection: string;\n} & ActorReadParams &\n  Pick<Doc<D>, 'key'>): Promise<Doc<D> | undefined> => {\n  const {get_doc} = await getSatelliteActor(rest);\n\n  const doc = fromNullable(await get_doc(collection, key));\n\n  if (isNullish(doc)) {\n    return undefined;\n  }\n\n  return fromDoc({doc, key});\n};\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const getManyDocs = async ({\n  docs,\n  ...rest\n}: {\n  docs: ({collection: string} & Pick<Doc<any>, 'key'>)[];\n} & ActorReadParams): Promise<(Doc<any> | undefined)[]> => {\n  const {get_many_docs} = await getSatelliteActor(rest);\n\n  const payload: [string, string][] = docs.map(({collection, key}) => [collection, key]);\n\n  const resultsDocs = await get_many_docs(payload);\n\n  const results: (Doc<any> | undefined)[] = [];\n  for (const [key, resultDoc] of resultsDocs) {\n    const doc = fromNullable(resultDoc);\n    results.push(nonNullish(doc) ? await fromDoc({key, doc}) : undefined);\n  }\n\n  return results;\n};\n/* eslint-enable */\n\nexport const setDoc = async <D>({\n  collection,\n  doc,\n  ...rest\n}: {\n  collection: string;\n  doc: Doc<D>;\n} & ActorUpdateParams): Promise<Doc<D>> => {\n  const {set_doc} = await getSatelliteActor(rest);\n\n  const {key} = doc;\n\n  const setDoc = await toSetDoc(doc);\n\n  const updatedDoc = await set_doc(collection, key, setDoc);\n\n  return await fromDoc({key, doc: updatedDoc});\n};\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const setManyDocs = async ({\n  docs,\n  ...rest\n}: {\n  docs: {collection: string; doc: Doc<any>}[];\n} & ActorUpdateParams): Promise<Doc<any>[]> => {\n  const {set_many_docs} = await getSatelliteActor(rest);\n\n  const payload: [string, string, SatelliteDid.SetDoc][] = [];\n  for (const {collection, doc} of docs) {\n    const {key} = doc;\n    payload.push([collection, key, await toSetDoc(doc)]);\n  }\n\n  const updatedDocs = await set_many_docs(payload);\n\n  const results: Doc<any>[] = [];\n  for (const [key, updatedDoc] of updatedDocs) {\n    results.push(await fromDoc({key, doc: updatedDoc}));\n  }\n\n  return results;\n};\n/* eslint-enable */\n\nexport const deleteDoc = async <D>({\n  collection,\n  doc,\n  ...rest\n}: {\n  collection: string;\n  doc: Doc<D>;\n} & ActorUpdateParams): Promise<void> => {\n  const {del_doc} = await getSatelliteActor(rest);\n\n  const {key} = doc;\n\n  return del_doc(collection, key, toDelDoc(doc));\n};\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const deleteManyDocs = async ({\n  docs,\n  ...rest\n}: {\n  docs: {collection: string; doc: Doc<any>}[];\n} & ActorUpdateParams): Promise<void> => {\n  const {del_many_docs} = await getSatelliteActor(rest);\n\n  const payload: [string, string, SatelliteDid.DelDoc][] = docs.map(({collection, doc}) => [\n    collection,\n    doc.key,\n    toDelDoc(doc)\n  ]);\n\n  await del_many_docs(payload);\n};\n/* eslint-enable */\n\nexport const deleteFilteredDocs = async ({\n  collection,\n  filter,\n  ...rest\n}: {\n  collection: string;\n  filter: ListParams;\n} & ActorUpdateParams): Promise<void> => {\n  const {del_filtered_docs} = await getSatelliteActor(rest);\n\n  return del_filtered_docs(collection, toListParams(filter));\n};\n\nexport const listDocs = async <D>({\n  collection,\n  filter,\n  ...rest\n}: {\n  collection: string;\n  filter: ListParams;\n} & ActorReadParams): Promise<ListResults<Doc<D>>> => {\n  const {list_docs} = await getSatelliteActor(rest);\n\n  const {items, items_page, items_length, matches_length, matches_pages} = await list_docs(\n    collection,\n    toListParams(filter)\n  );\n\n  const docs: Doc<D>[] = [];\n\n  for (const [key, item] of items) {\n    const {data: dataArray, owner, description, version, ...rest} = item;\n\n    docs.push({\n      key,\n      description: fromNullable(description),\n      owner: owner.toText(),\n      data: await mapData<ExcludeDate<D>>({data: dataArray}),\n      version: fromNullable(version),\n      ...rest\n    });\n  }\n\n  return {\n    items: docs,\n    items_length,\n    items_page: fromNullable(items_page),\n    matches_length,\n    matches_pages: fromNullable(matches_pages)\n  };\n};\n\nexport const countDocs = async ({\n  collection,\n  filter,\n  ...rest\n}: {\n  collection: string;\n  filter: ListParams;\n} & ActorReadParams): Promise<bigint> => {\n  const {count_docs} = await getSatelliteActor(rest);\n\n  return count_docs(collection, toListParams(filter));\n};\n", "import {Actor, type ActorConfig, type ActorMethod, type ActorSubclass} from '@icp-sdk/core/agent';\nimport type {IDL} from '@icp-sdk/core/candid';\nimport type {Principal} from '@icp-sdk/core/principal';\nimport {isNullish} from '@junobuild/utils';\nimport type {\n  ActorParameters,\n  ConsoleParameters,\n  MissionControlParameters,\n  OrbiterParameters,\n  SatelliteParameters\n} from '../types/actor';\nimport {\n  idlCertifiedFactoryConsole,\n  idlCertifiedFactoryOrbiter,\n  idlCertifiedFactorySatellite,\n  idlDeprecatedFactoryMissionControlVersion,\n  idlDeprecatedFactoryOrbiterVersion,\n  idlDeprecatedFactorySatellite,\n  idlDeprecatedFactorySatelliteNoScope,\n  idlDeprecatedFactorySatelliteVersion,\n  idlFactoryConsole,\n  idlFactoryMissionControl,\n  idlFactoryOrbiter,\n  idlFactorySatellite,\n  type ConsoleActor,\n  type DeprecatedMissionControlVersionActor,\n  type DeprecatedOrbiterVersionActor,\n  type DeprecatedSatelliteActor,\n  type DeprecatedSatelliteNoScopeActor,\n  type DeprecatedSatelliteVersionActor,\n  type MissionControlActor,\n  type OrbiterActor,\n  type SatelliteActor\n} from './actor.factory';\nimport {useOrInitAgent} from './agent.api';\n\n/**\n * @deprecated TODO: for backwards compatibility - to be removed\n */\nexport const getDeprecatedSatelliteActor = ({\n  satelliteId,\n  ...rest\n}: SatelliteParameters): Promise<DeprecatedSatelliteActor> =>\n  getActor({\n    canisterId: satelliteId,\n    ...rest,\n    idlFactory: idlDeprecatedFactorySatellite\n  });\n\nexport const getSatelliteActor = ({\n  satelliteId,\n  certified = false,\n  ...rest\n}: SatelliteParameters & {certified?: boolean}): Promise<SatelliteActor> =>\n  getActor({\n    canisterId: satelliteId,\n    ...rest,\n    idlFactory: certified ? idlCertifiedFactorySatellite : idlFactorySatellite\n  });\n\n/**\n * @deprecated TODO: for backwards compatibility - to be removed\n */\nexport const getDeprecatedSatelliteNoScopeActor = ({\n  satelliteId,\n  ...rest\n}: SatelliteParameters): Promise<DeprecatedSatelliteNoScopeActor> =>\n  getActor({\n    canisterId: satelliteId,\n    ...rest,\n    idlFactory: idlDeprecatedFactorySatelliteNoScope\n  });\n\n/**\n * @deprecated TODO: for backwards compatibility - to be removed\n */\nexport const getDeprecatedSatelliteVersionActor = ({\n  satelliteId,\n  ...rest\n}: SatelliteParameters): Promise<DeprecatedSatelliteVersionActor> =>\n  getActor({\n    canisterId: satelliteId,\n    ...rest,\n    idlFactory: idlDeprecatedFactorySatelliteVersion\n  });\n\nexport const getMissionControlActor = ({\n  missionControlId,\n  ...rest\n}: MissionControlParameters): Promise<MissionControlActor> =>\n  getActor({\n    canisterId: missionControlId,\n    ...rest,\n    idlFactory: idlFactoryMissionControl\n  });\n\n/**\n * @deprecated TODO: for backwards compatibility - to be removed\n */\nexport const getDeprecatedMissionControlVersionActor = ({\n  missionControlId,\n  ...rest\n}: MissionControlParameters): Promise<DeprecatedMissionControlVersionActor> =>\n  getActor({\n    canisterId: missionControlId,\n    ...rest,\n    idlFactory: idlDeprecatedFactoryMissionControlVersion\n  });\n\nexport const getOrbiterActor = ({\n  orbiterId,\n  certified = false,\n  ...rest\n}: OrbiterParameters & {certified?: boolean}): Promise<OrbiterActor> =>\n  getActor({\n    canisterId: orbiterId,\n    ...rest,\n    idlFactory: certified ? idlCertifiedFactoryOrbiter : idlFactoryOrbiter\n  });\n\n/**\n * @deprecated TODO: for backwards compatibility - to be removed\n */\nexport const getDeprecatedOrbiterVersionActor = ({\n  orbiterId,\n  ...rest\n}: OrbiterParameters): Promise<DeprecatedOrbiterVersionActor> =>\n  getActor({\n    canisterId: orbiterId,\n    ...rest,\n    idlFactory: idlDeprecatedFactoryOrbiterVersion\n  });\n\nexport const getConsoleActor = ({\n  consoleId,\n  certified = false,\n  ...rest\n}: ConsoleParameters & {certified?: boolean}): Promise<ConsoleActor> =>\n  getActor({\n    canisterId: consoleId,\n    ...rest,\n    idlFactory: certified ? idlCertifiedFactoryConsole : idlFactoryConsole\n  });\n\nexport const getActor = <T>({\n  canisterId,\n  idlFactory,\n  ...rest\n}: ActorParameters & {\n  canisterId: Principal | string | undefined;\n  idlFactory: IDL.InterfaceFactory;\n}): Promise<T> => {\n  if (isNullish(canisterId)) {\n    throw new Error('No canister ID provided.');\n  }\n\n  return createActor({\n    canisterId,\n    idlFactory,\n    ...rest\n  });\n};\n\nconst createActor = async <T = Record<string, ActorMethod>>({\n  canisterId,\n  idlFactory,\n  config,\n  ...rest\n}: {\n  idlFactory: IDL.InterfaceFactory;\n  canisterId: Principal | string;\n  config?: Pick<ActorConfig, 'callTransform' | 'queryTransform'>;\n} & ActorParameters): Promise<ActorSubclass<T>> => {\n  const agent = await useOrInitAgent(rest);\n\n  // Creates an actor with using the candid interface and the HttpAgent\n  return Actor.createActor(idlFactory, {\n    agent,\n    canisterId,\n    ...(config ?? {})\n  });\n};\n", "/* eslint-disable */\n\n// @ts-nocheck\n\n// This file was automatically generated by @icp-sdk/bindgen@0.2.1.\n// You should NOT make any changes in this file as it will be overwritten.\n// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.\n\nexport const idlFactory = ({IDL}) => {\n  const InitMissionControlArgs = IDL.Record({user: IDL.Principal});\n  const CyclesThreshold = IDL.Record({\n    fund_cycles: IDL.Nat,\n    min_cycles: IDL.Nat\n  });\n  const CyclesMonitoringStrategy = IDL.Variant({\n    BelowThreshold: CyclesThreshold\n  });\n  const CyclesMonitoring = IDL.Record({\n    strategy: IDL.Opt(CyclesMonitoringStrategy),\n    enabled: IDL.Bool\n  });\n  const Monitoring = IDL.Record({cycles: IDL.Opt(CyclesMonitoring)});\n  const Settings = IDL.Record({monitoring: IDL.Opt(Monitoring)});\n  const Orbiter = IDL.Record({\n    updated_at: IDL.Nat64,\n    orbiter_id: IDL.Principal,\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    created_at: IDL.Nat64,\n    settings: IDL.Opt(Settings)\n  });\n  const CreateCanisterConfig = IDL.Record({\n    subnet_id: IDL.Opt(IDL.Principal),\n    name: IDL.Opt(IDL.Text)\n  });\n  const Satellite = IDL.Record({\n    updated_at: IDL.Nat64,\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    created_at: IDL.Nat64,\n    satellite_id: IDL.Principal,\n    settings: IDL.Opt(Settings)\n  });\n  const InitStorageMemory = IDL.Variant({\n    Heap: IDL.Null,\n    Stable: IDL.Null\n  });\n  const InitStorageArgs = IDL.Record({\n    system_memory: IDL.Opt(InitStorageMemory)\n  });\n  const CreateSatelliteConfig = IDL.Record({\n    subnet_id: IDL.Opt(IDL.Principal),\n    storage: IDL.Opt(InitStorageArgs),\n    name: IDL.Opt(IDL.Text)\n  });\n  const DepositCyclesArgs = IDL.Record({\n    cycles: IDL.Nat,\n    destination_id: IDL.Principal\n  });\n  const DepositedCyclesEmailNotification = IDL.Record({\n    to: IDL.Opt(IDL.Text),\n    enabled: IDL.Bool\n  });\n  const CyclesMonitoringConfig = IDL.Record({\n    notification: IDL.Opt(DepositedCyclesEmailNotification),\n    default_strategy: IDL.Opt(CyclesMonitoringStrategy)\n  });\n  const MonitoringConfig = IDL.Record({\n    cycles: IDL.Opt(CyclesMonitoringConfig)\n  });\n  const Config = IDL.Record({monitoring: IDL.Opt(MonitoringConfig)});\n  const GetMonitoringHistory = IDL.Record({\n    to: IDL.Opt(IDL.Nat64),\n    from: IDL.Opt(IDL.Nat64),\n    segment_id: IDL.Principal\n  });\n  const MonitoringHistoryKey = IDL.Record({\n    segment_id: IDL.Principal,\n    created_at: IDL.Nat64,\n    nonce: IDL.Int32\n  });\n  const CyclesBalance = IDL.Record({\n    timestamp: IDL.Nat64,\n    amount: IDL.Nat\n  });\n  const FundingErrorCode = IDL.Variant({\n    BalanceCheckFailed: IDL.Null,\n    ObtainCyclesFailed: IDL.Null,\n    DepositFailed: IDL.Null,\n    InsufficientCycles: IDL.Null,\n    Other: IDL.Text\n  });\n  const FundingFailure = IDL.Record({\n    timestamp: IDL.Nat64,\n    error_code: FundingErrorCode\n  });\n  const MonitoringHistoryCycles = IDL.Record({\n    deposited_cycles: IDL.Opt(CyclesBalance),\n    cycles: CyclesBalance,\n    funding_failure: IDL.Opt(FundingFailure)\n  });\n  const MonitoringHistory = IDL.Record({\n    cycles: IDL.Opt(MonitoringHistoryCycles)\n  });\n  const CyclesMonitoringStatus = IDL.Record({\n    monitored_ids: IDL.Vec(IDL.Principal),\n    running: IDL.Bool\n  });\n  const MonitoringStatus = IDL.Record({\n    cycles: IDL.Opt(CyclesMonitoringStatus)\n  });\n  const MissionControlSettings = IDL.Record({\n    updated_at: IDL.Nat64,\n    created_at: IDL.Nat64,\n    monitoring: IDL.Opt(Monitoring)\n  });\n  const User = IDL.Record({\n    updated_at: IDL.Nat64,\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    user: IDL.Opt(IDL.Principal),\n    created_at: IDL.Nat64,\n    config: IDL.Opt(Config)\n  });\n  const Tokens = IDL.Record({e8s: IDL.Nat64});\n  const Timestamp = IDL.Record({timestamp_nanos: IDL.Nat64});\n  const TransferArgs = IDL.Record({\n    to: IDL.Vec(IDL.Nat8),\n    fee: Tokens,\n    memo: IDL.Nat64,\n    from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n    created_at_time: IDL.Opt(Timestamp),\n    amount: Tokens\n  });\n  const TransferError = IDL.Variant({\n    TxTooOld: IDL.Record({allowed_window_nanos: IDL.Nat64}),\n    BadFee: IDL.Record({expected_fee: Tokens}),\n    TxDuplicate: IDL.Record({duplicate_of: IDL.Nat64}),\n    TxCreatedInFuture: IDL.Null,\n    InsufficientFunds: IDL.Record({balance: Tokens})\n  });\n  const Result = IDL.Variant({Ok: IDL.Nat64, Err: TransferError});\n  const Account = IDL.Record({\n    owner: IDL.Principal,\n    subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n  });\n  const TransferArg = IDL.Record({\n    to: Account,\n    fee: IDL.Opt(IDL.Nat),\n    memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n    from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n    created_at_time: IDL.Opt(IDL.Nat64),\n    amount: IDL.Nat\n  });\n  const TransferError_1 = IDL.Variant({\n    GenericError: IDL.Record({\n      message: IDL.Text,\n      error_code: IDL.Nat\n    }),\n    TemporarilyUnavailable: IDL.Null,\n    BadBurn: IDL.Record({min_burn_amount: IDL.Nat}),\n    Duplicate: IDL.Record({duplicate_of: IDL.Nat}),\n    BadFee: IDL.Record({expected_fee: IDL.Nat}),\n    CreatedInFuture: IDL.Record({ledger_time: IDL.Nat64}),\n    TooOld: IDL.Null,\n    InsufficientFunds: IDL.Record({balance: IDL.Nat})\n  });\n  const Result_1 = IDL.Variant({Ok: IDL.Nat, Err: TransferError_1});\n  const AccessKeyKind = IDL.Variant({\n    Emulator: IDL.Null,\n    Automation: IDL.Null\n  });\n  const AccessKeyScope = IDL.Variant({\n    Write: IDL.Null,\n    Admin: IDL.Null,\n    Submit: IDL.Null\n  });\n  const AccessKey = IDL.Record({\n    updated_at: IDL.Nat64,\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    kind: IDL.Opt(AccessKeyKind),\n    created_at: IDL.Nat64,\n    scope: AccessKeyScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const SetAccessKey = IDL.Record({\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    kind: IDL.Opt(AccessKeyKind),\n    scope: AccessKeyScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const SegmentsMonitoringStrategy = IDL.Record({\n    ids: IDL.Vec(IDL.Principal),\n    strategy: CyclesMonitoringStrategy\n  });\n  const CyclesMonitoringStartConfig = IDL.Record({\n    orbiters_strategy: IDL.Opt(SegmentsMonitoringStrategy),\n    mission_control_strategy: IDL.Opt(CyclesMonitoringStrategy),\n    satellites_strategy: IDL.Opt(SegmentsMonitoringStrategy)\n  });\n  const MonitoringStartConfig = IDL.Record({\n    cycles_config: IDL.Opt(CyclesMonitoringStartConfig)\n  });\n  const CyclesMonitoringStopConfig = IDL.Record({\n    satellite_ids: IDL.Opt(IDL.Vec(IDL.Principal)),\n    try_mission_control: IDL.Opt(IDL.Bool),\n    orbiter_ids: IDL.Opt(IDL.Vec(IDL.Principal))\n  });\n  const MonitoringStopConfig = IDL.Record({\n    cycles_config: IDL.Opt(CyclesMonitoringStopConfig)\n  });\n\n  return IDL.Service({\n    create_orbiter: IDL.Func([IDL.Opt(IDL.Text)], [Orbiter], []),\n    create_orbiter_with_config: IDL.Func([CreateCanisterConfig], [Orbiter], []),\n    create_satellite: IDL.Func([IDL.Text], [Satellite], []),\n    create_satellite_with_config: IDL.Func([CreateSatelliteConfig], [Satellite], []),\n    del_mission_control_controllers: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n    del_orbiter: IDL.Func([IDL.Principal, IDL.Nat], [], []),\n    del_orbiters_controllers: IDL.Func([IDL.Vec(IDL.Principal), IDL.Vec(IDL.Principal)], [], []),\n    del_satellite: IDL.Func([IDL.Principal, IDL.Nat], [], []),\n    del_satellites_controllers: IDL.Func([IDL.Vec(IDL.Principal), IDL.Vec(IDL.Principal)], [], []),\n    deposit_cycles: IDL.Func([DepositCyclesArgs], [], []),\n    get_config: IDL.Func([], [IDL.Opt(Config)], ['query']),\n    get_metadata: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))], ['query']),\n    get_monitoring_history: IDL.Func(\n      [GetMonitoringHistory],\n      [IDL.Vec(IDL.Tuple(MonitoringHistoryKey, MonitoringHistory))],\n      ['query']\n    ),\n    get_monitoring_status: IDL.Func([], [MonitoringStatus], ['query']),\n    get_settings: IDL.Func([], [IDL.Opt(MissionControlSettings)], ['query']),\n    get_user: IDL.Func([], [IDL.Principal], ['query']),\n    get_user_data: IDL.Func([], [User], ['query']),\n    icp_transfer: IDL.Func([TransferArgs], [Result], []),\n    icrc_transfer: IDL.Func([IDL.Principal, TransferArg], [Result_1], []),\n    list_mission_control_controllers: IDL.Func(\n      [],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, AccessKey))],\n      ['query']\n    ),\n    list_orbiters: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Principal, Orbiter))], ['query']),\n    list_satellites: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Principal, Satellite))], ['query']),\n    set_config: IDL.Func([IDL.Opt(Config)], [], []),\n    set_metadata: IDL.Func([IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))], [], []),\n    set_mission_control_controllers: IDL.Func([IDL.Vec(IDL.Principal), SetAccessKey], [], []),\n    set_orbiter: IDL.Func([IDL.Principal, IDL.Opt(IDL.Text)], [Orbiter], []),\n    set_orbiter_metadata: IDL.Func(\n      [IDL.Principal, IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n      [Orbiter],\n      []\n    ),\n    set_orbiters_controllers: IDL.Func(\n      [IDL.Vec(IDL.Principal), IDL.Vec(IDL.Principal), SetAccessKey],\n      [],\n      []\n    ),\n    set_satellite: IDL.Func([IDL.Principal, IDL.Opt(IDL.Text)], [Satellite], []),\n    set_satellite_metadata: IDL.Func(\n      [IDL.Principal, IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n      [Satellite],\n      []\n    ),\n    set_satellites_controllers: IDL.Func(\n      [IDL.Vec(IDL.Principal), IDL.Vec(IDL.Principal), SetAccessKey],\n      [],\n      []\n    ),\n    start_monitoring: IDL.Func([], [], []),\n    stop_monitoring: IDL.Func([], [], []),\n    top_up: IDL.Func([IDL.Principal, Tokens], [], []),\n    unset_orbiter: IDL.Func([IDL.Principal], [], []),\n    unset_satellite: IDL.Func([IDL.Principal], [], []),\n    update_and_start_monitoring: IDL.Func([MonitoringStartConfig], [], []),\n    update_and_stop_monitoring: IDL.Func([MonitoringStopConfig], [], [])\n  });\n};\n\nexport const init = ({IDL}) => {\n  const InitMissionControlArgs = IDL.Record({user: IDL.Principal});\n\n  return [InitMissionControlArgs];\n};\n", "/* eslint-disable */\n\n// @ts-nocheck\n\n// This file was automatically generated by @icp-sdk/bindgen@0.2.1.\n// You should NOT make any changes in this file as it will be overwritten.\n// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.\n\nexport const idlFactory = ({IDL}) => {\n  const InitOrbiterArgs = IDL.Record({\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const DeleteControllersArgs = IDL.Record({\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const AccessKeyKind = IDL.Variant({\n    Emulator: IDL.Null,\n    Automation: IDL.Null\n  });\n  const AccessKeyScope = IDL.Variant({\n    Write: IDL.Null,\n    Admin: IDL.Null,\n    Submit: IDL.Null\n  });\n  const AccessKey = IDL.Record({\n    updated_at: IDL.Nat64,\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    kind: IDL.Opt(AccessKeyKind),\n    created_at: IDL.Nat64,\n    scope: AccessKeyScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const DelSatelliteConfig = IDL.Record({version: IDL.Opt(IDL.Nat64)});\n  const DepositCyclesArgs = IDL.Record({\n    cycles: IDL.Nat,\n    destination_id: IDL.Principal\n  });\n  const GetAnalytics = IDL.Record({\n    to: IDL.Opt(IDL.Nat64),\n    from: IDL.Opt(IDL.Nat64),\n    satellite_id: IDL.Opt(IDL.Principal)\n  });\n  const AnalyticKey = IDL.Record({\n    key: IDL.Text,\n    collected_at: IDL.Nat64\n  });\n  const PageViewClient = IDL.Record({\n    os: IDL.Text,\n    device: IDL.Opt(IDL.Text),\n    browser: IDL.Text\n  });\n  const PageViewCampaign = IDL.Record({\n    utm_content: IDL.Opt(IDL.Text),\n    utm_medium: IDL.Opt(IDL.Text),\n    utm_source: IDL.Text,\n    utm_term: IDL.Opt(IDL.Text),\n    utm_campaign: IDL.Opt(IDL.Text)\n  });\n  const PageViewDevice = IDL.Record({\n    inner_height: IDL.Nat16,\n    screen_height: IDL.Opt(IDL.Nat16),\n    screen_width: IDL.Opt(IDL.Nat16),\n    inner_width: IDL.Nat16\n  });\n  const PageView = IDL.Record({\n    client: IDL.Opt(PageViewClient),\n    title: IDL.Text,\n    updated_at: IDL.Nat64,\n    referrer: IDL.Opt(IDL.Text),\n    time_zone: IDL.Text,\n    session_id: IDL.Text,\n    campaign: IDL.Opt(PageViewCampaign),\n    href: IDL.Text,\n    created_at: IDL.Nat64,\n    satellite_id: IDL.Principal,\n    device: PageViewDevice,\n    version: IDL.Opt(IDL.Nat64),\n    user_agent: IDL.Opt(IDL.Text)\n  });\n  const AnalyticsBrowsersPageViews = IDL.Record({\n    safari: IDL.Float64,\n    opera: IDL.Float64,\n    others: IDL.Float64,\n    firefox: IDL.Float64,\n    chrome: IDL.Float64\n  });\n  const AnalyticsOperatingSystemsPageViews = IDL.Record({\n    ios: IDL.Float64,\n    macos: IDL.Float64,\n    others: IDL.Float64,\n    linux: IDL.Float64,\n    android: IDL.Float64,\n    windows: IDL.Float64\n  });\n  const AnalyticsDevicesPageViews = IDL.Record({\n    desktop: IDL.Float64,\n    laptop: IDL.Opt(IDL.Float64),\n    others: IDL.Float64,\n    tablet: IDL.Opt(IDL.Float64),\n    mobile: IDL.Float64\n  });\n  const AnalyticsClientsPageViews = IDL.Record({\n    browsers: AnalyticsBrowsersPageViews,\n    operating_systems: IDL.Opt(AnalyticsOperatingSystemsPageViews),\n    devices: AnalyticsDevicesPageViews\n  });\n  const CalendarDate = IDL.Record({\n    day: IDL.Nat8,\n    month: IDL.Nat8,\n    year: IDL.Int32\n  });\n  const AnalyticsMetricsPageViews = IDL.Record({\n    bounce_rate: IDL.Float64,\n    average_page_views_per_session: IDL.Float64,\n    daily_total_page_views: IDL.Vec(IDL.Tuple(CalendarDate, IDL.Nat32)),\n    total_page_views: IDL.Nat32,\n    unique_page_views: IDL.Nat64,\n    unique_sessions: IDL.Nat64\n  });\n  const AnalyticsTop10PageViews = IDL.Record({\n    referrers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat32)),\n    pages: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat32)),\n    utm_campaigns: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat32))),\n    utm_sources: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat32))),\n    time_zones: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat32)))\n  });\n  const NavigationType = IDL.Variant({\n    Navigate: IDL.Null,\n    Restore: IDL.Null,\n    Reload: IDL.Null,\n    BackForward: IDL.Null,\n    BackForwardCache: IDL.Null,\n    Prerender: IDL.Null\n  });\n  const WebVitalsMetric = IDL.Record({\n    id: IDL.Text,\n    value: IDL.Float64,\n    navigation_type: IDL.Opt(NavigationType),\n    delta: IDL.Float64\n  });\n  const PerformanceData = IDL.Variant({WebVitalsMetric: WebVitalsMetric});\n  const PerformanceMetricName = IDL.Variant({\n    CLS: IDL.Null,\n    FCP: IDL.Null,\n    INP: IDL.Null,\n    LCP: IDL.Null,\n    TTFB: IDL.Null\n  });\n  const PerformanceMetric = IDL.Record({\n    updated_at: IDL.Nat64,\n    session_id: IDL.Text,\n    data: PerformanceData,\n    href: IDL.Text,\n    metric_name: PerformanceMetricName,\n    created_at: IDL.Nat64,\n    satellite_id: IDL.Principal,\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const AnalyticsWebVitalsPageMetrics = IDL.Record({\n    cls: IDL.Opt(IDL.Float64),\n    fcp: IDL.Opt(IDL.Float64),\n    inp: IDL.Opt(IDL.Float64),\n    lcp: IDL.Opt(IDL.Float64),\n    ttfb: IDL.Opt(IDL.Float64)\n  });\n  const AnalyticsWebVitalsPerformanceMetrics = IDL.Record({\n    overall: AnalyticsWebVitalsPageMetrics,\n    pages: IDL.Vec(IDL.Tuple(IDL.Text, AnalyticsWebVitalsPageMetrics))\n  });\n  const TrackEvent = IDL.Record({\n    updated_at: IDL.Nat64,\n    session_id: IDL.Text,\n    metadata: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))),\n    name: IDL.Text,\n    created_at: IDL.Nat64,\n    satellite_id: IDL.Principal,\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const AnalyticsTrackEvents = IDL.Record({\n    total: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat32))\n  });\n  const HttpRequest = IDL.Record({\n    url: IDL.Text,\n    method: IDL.Text,\n    body: IDL.Vec(IDL.Nat8),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    certificate_version: IDL.Opt(IDL.Nat16)\n  });\n  const HttpResponse = IDL.Record({\n    body: IDL.Vec(IDL.Nat8),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    upgrade: IDL.Opt(IDL.Bool),\n    status_code: IDL.Nat16\n  });\n  const OrbiterSatelliteFeatures = IDL.Record({\n    performance_metrics: IDL.Bool,\n    track_events: IDL.Bool,\n    page_views: IDL.Bool\n  });\n  const OrbiterSatelliteConfig = IDL.Record({\n    updated_at: IDL.Nat64,\n    features: IDL.Opt(OrbiterSatelliteFeatures),\n    restricted_origin: IDL.Opt(IDL.Text),\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const MemorySize = IDL.Record({stable: IDL.Nat64, heap: IDL.Nat64});\n  const SetAccessKey = IDL.Record({\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    kind: IDL.Opt(AccessKeyKind),\n    scope: AccessKeyScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const SetControllersArgs = IDL.Record({\n    controller: SetAccessKey,\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const SetPageView = IDL.Record({\n    client: IDL.Opt(PageViewClient),\n    title: IDL.Text,\n    updated_at: IDL.Opt(IDL.Nat64),\n    referrer: IDL.Opt(IDL.Text),\n    time_zone: IDL.Text,\n    session_id: IDL.Text,\n    campaign: IDL.Opt(PageViewCampaign),\n    href: IDL.Text,\n    satellite_id: IDL.Principal,\n    device: PageViewDevice,\n    version: IDL.Opt(IDL.Nat64),\n    user_agent: IDL.Opt(IDL.Text)\n  });\n  const Result = IDL.Variant({Ok: PageView, Err: IDL.Text});\n  const Result_1 = IDL.Variant({\n    Ok: IDL.Null,\n    Err: IDL.Vec(IDL.Tuple(AnalyticKey, IDL.Text))\n  });\n  const SetPerformanceMetric = IDL.Record({\n    session_id: IDL.Text,\n    data: PerformanceData,\n    href: IDL.Text,\n    metric_name: PerformanceMetricName,\n    satellite_id: IDL.Principal,\n    version: IDL.Opt(IDL.Nat64),\n    user_agent: IDL.Opt(IDL.Text)\n  });\n  const Result_2 = IDL.Variant({Ok: PerformanceMetric, Err: IDL.Text});\n  const SetSatelliteConfig = IDL.Record({\n    features: IDL.Opt(OrbiterSatelliteFeatures),\n    restricted_origin: IDL.Opt(IDL.Text),\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const SetTrackEvent = IDL.Record({\n    updated_at: IDL.Opt(IDL.Nat64),\n    session_id: IDL.Text,\n    metadata: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))),\n    name: IDL.Text,\n    satellite_id: IDL.Principal,\n    version: IDL.Opt(IDL.Nat64),\n    user_agent: IDL.Opt(IDL.Text)\n  });\n  const Result_3 = IDL.Variant({Ok: TrackEvent, Err: IDL.Text});\n\n  return IDL.Service({\n    del_controllers: IDL.Func(\n      [DeleteControllersArgs],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, AccessKey))],\n      []\n    ),\n    del_satellite_config: IDL.Func([IDL.Principal, DelSatelliteConfig], [], []),\n    deposit_cycles: IDL.Func([DepositCyclesArgs], [], []),\n    get_page_views: IDL.Func(\n      [GetAnalytics],\n      [IDL.Vec(IDL.Tuple(AnalyticKey, PageView))],\n      ['query']\n    ),\n    get_page_views_analytics_clients: IDL.Func(\n      [GetAnalytics],\n      [AnalyticsClientsPageViews],\n      ['query']\n    ),\n    get_page_views_analytics_metrics: IDL.Func(\n      [GetAnalytics],\n      [AnalyticsMetricsPageViews],\n      ['query']\n    ),\n    get_page_views_analytics_top_10: IDL.Func([GetAnalytics], [AnalyticsTop10PageViews], ['query']),\n    get_performance_metrics: IDL.Func(\n      [GetAnalytics],\n      [IDL.Vec(IDL.Tuple(AnalyticKey, PerformanceMetric))],\n      ['query']\n    ),\n    get_performance_metrics_analytics_web_vitals: IDL.Func(\n      [GetAnalytics],\n      [AnalyticsWebVitalsPerformanceMetrics],\n      ['query']\n    ),\n    get_track_events: IDL.Func(\n      [GetAnalytics],\n      [IDL.Vec(IDL.Tuple(AnalyticKey, TrackEvent))],\n      ['query']\n    ),\n    get_track_events_analytics: IDL.Func([GetAnalytics], [AnalyticsTrackEvents], ['query']),\n    http_request: IDL.Func([HttpRequest], [HttpResponse], ['query']),\n    http_request_update: IDL.Func([HttpRequest], [HttpResponse], []),\n    list_controllers: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Principal, AccessKey))], ['query']),\n    list_satellite_configs: IDL.Func(\n      [],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, OrbiterSatelliteConfig))],\n      ['query']\n    ),\n    memory_size: IDL.Func([], [MemorySize], ['query']),\n    set_controllers: IDL.Func(\n      [SetControllersArgs],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, AccessKey))],\n      []\n    ),\n    set_page_view: IDL.Func([AnalyticKey, SetPageView], [Result], []),\n    set_page_views: IDL.Func([IDL.Vec(IDL.Tuple(AnalyticKey, SetPageView))], [Result_1], []),\n    set_performance_metric: IDL.Func([AnalyticKey, SetPerformanceMetric], [Result_2], []),\n    set_performance_metrics: IDL.Func(\n      [IDL.Vec(IDL.Tuple(AnalyticKey, SetPerformanceMetric))],\n      [Result_1],\n      []\n    ),\n    set_satellite_configs: IDL.Func(\n      [IDL.Vec(IDL.Tuple(IDL.Principal, SetSatelliteConfig))],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, OrbiterSatelliteConfig))],\n      []\n    ),\n    set_track_event: IDL.Func([AnalyticKey, SetTrackEvent], [Result_3], []),\n    set_track_events: IDL.Func([IDL.Vec(IDL.Tuple(AnalyticKey, SetTrackEvent))], [Result_1], [])\n  });\n};\n\nexport const init = ({IDL}) => {\n  const InitOrbiterArgs = IDL.Record({\n    controllers: IDL.Vec(IDL.Principal)\n  });\n\n  return [InitOrbiterArgs];\n};\n", "/* eslint-disable */\n\n// @ts-nocheck\n\n// This file was automatically generated by @icp-sdk/bindgen@0.2.1.\n// You should NOT make any changes in this file as it will be overwritten.\n// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.\n\nexport const idlFactory = ({IDL}) => {\n  const InitOrbiterArgs = IDL.Record({\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const DeleteControllersArgs = IDL.Record({\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const AccessKeyKind = IDL.Variant({\n    Emulator: IDL.Null,\n    Automation: IDL.Null\n  });\n  const AccessKeyScope = IDL.Variant({\n    Write: IDL.Null,\n    Admin: IDL.Null,\n    Submit: IDL.Null\n  });\n  const AccessKey = IDL.Record({\n    updated_at: IDL.Nat64,\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    kind: IDL.Opt(AccessKeyKind),\n    created_at: IDL.Nat64,\n    scope: AccessKeyScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const DelSatelliteConfig = IDL.Record({version: IDL.Opt(IDL.Nat64)});\n  const DepositCyclesArgs = IDL.Record({\n    cycles: IDL.Nat,\n    destination_id: IDL.Principal\n  });\n  const GetAnalytics = IDL.Record({\n    to: IDL.Opt(IDL.Nat64),\n    from: IDL.Opt(IDL.Nat64),\n    satellite_id: IDL.Opt(IDL.Principal)\n  });\n  const AnalyticKey = IDL.Record({\n    key: IDL.Text,\n    collected_at: IDL.Nat64\n  });\n  const PageViewClient = IDL.Record({\n    os: IDL.Text,\n    device: IDL.Opt(IDL.Text),\n    browser: IDL.Text\n  });\n  const PageViewCampaign = IDL.Record({\n    utm_content: IDL.Opt(IDL.Text),\n    utm_medium: IDL.Opt(IDL.Text),\n    utm_source: IDL.Text,\n    utm_term: IDL.Opt(IDL.Text),\n    utm_campaign: IDL.Opt(IDL.Text)\n  });\n  const PageViewDevice = IDL.Record({\n    inner_height: IDL.Nat16,\n    screen_height: IDL.Opt(IDL.Nat16),\n    screen_width: IDL.Opt(IDL.Nat16),\n    inner_width: IDL.Nat16\n  });\n  const PageView = IDL.Record({\n    client: IDL.Opt(PageViewClient),\n    title: IDL.Text,\n    updated_at: IDL.Nat64,\n    referrer: IDL.Opt(IDL.Text),\n    time_zone: IDL.Text,\n    session_id: IDL.Text,\n    campaign: IDL.Opt(PageViewCampaign),\n    href: IDL.Text,\n    created_at: IDL.Nat64,\n    satellite_id: IDL.Principal,\n    device: PageViewDevice,\n    version: IDL.Opt(IDL.Nat64),\n    user_agent: IDL.Opt(IDL.Text)\n  });\n  const AnalyticsBrowsersPageViews = IDL.Record({\n    safari: IDL.Float64,\n    opera: IDL.Float64,\n    others: IDL.Float64,\n    firefox: IDL.Float64,\n    chrome: IDL.Float64\n  });\n  const AnalyticsOperatingSystemsPageViews = IDL.Record({\n    ios: IDL.Float64,\n    macos: IDL.Float64,\n    others: IDL.Float64,\n    linux: IDL.Float64,\n    android: IDL.Float64,\n    windows: IDL.Float64\n  });\n  const AnalyticsDevicesPageViews = IDL.Record({\n    desktop: IDL.Float64,\n    laptop: IDL.Opt(IDL.Float64),\n    others: IDL.Float64,\n    tablet: IDL.Opt(IDL.Float64),\n    mobile: IDL.Float64\n  });\n  const AnalyticsClientsPageViews = IDL.Record({\n    browsers: AnalyticsBrowsersPageViews,\n    operating_systems: IDL.Opt(AnalyticsOperatingSystemsPageViews),\n    devices: AnalyticsDevicesPageViews\n  });\n  const CalendarDate = IDL.Record({\n    day: IDL.Nat8,\n    month: IDL.Nat8,\n    year: IDL.Int32\n  });\n  const AnalyticsMetricsPageViews = IDL.Record({\n    bounce_rate: IDL.Float64,\n    average_page_views_per_session: IDL.Float64,\n    daily_total_page_views: IDL.Vec(IDL.Tuple(CalendarDate, IDL.Nat32)),\n    total_page_views: IDL.Nat32,\n    unique_page_views: IDL.Nat64,\n    unique_sessions: IDL.Nat64\n  });\n  const AnalyticsTop10PageViews = IDL.Record({\n    referrers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat32)),\n    pages: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat32)),\n    utm_campaigns: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat32))),\n    utm_sources: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat32))),\n    time_zones: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat32)))\n  });\n  const NavigationType = IDL.Variant({\n    Navigate: IDL.Null,\n    Restore: IDL.Null,\n    Reload: IDL.Null,\n    BackForward: IDL.Null,\n    BackForwardCache: IDL.Null,\n    Prerender: IDL.Null\n  });\n  const WebVitalsMetric = IDL.Record({\n    id: IDL.Text,\n    value: IDL.Float64,\n    navigation_type: IDL.Opt(NavigationType),\n    delta: IDL.Float64\n  });\n  const PerformanceData = IDL.Variant({WebVitalsMetric: WebVitalsMetric});\n  const PerformanceMetricName = IDL.Variant({\n    CLS: IDL.Null,\n    FCP: IDL.Null,\n    INP: IDL.Null,\n    LCP: IDL.Null,\n    TTFB: IDL.Null\n  });\n  const PerformanceMetric = IDL.Record({\n    updated_at: IDL.Nat64,\n    session_id: IDL.Text,\n    data: PerformanceData,\n    href: IDL.Text,\n    metric_name: PerformanceMetricName,\n    created_at: IDL.Nat64,\n    satellite_id: IDL.Principal,\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const AnalyticsWebVitalsPageMetrics = IDL.Record({\n    cls: IDL.Opt(IDL.Float64),\n    fcp: IDL.Opt(IDL.Float64),\n    inp: IDL.Opt(IDL.Float64),\n    lcp: IDL.Opt(IDL.Float64),\n    ttfb: IDL.Opt(IDL.Float64)\n  });\n  const AnalyticsWebVitalsPerformanceMetrics = IDL.Record({\n    overall: AnalyticsWebVitalsPageMetrics,\n    pages: IDL.Vec(IDL.Tuple(IDL.Text, AnalyticsWebVitalsPageMetrics))\n  });\n  const TrackEvent = IDL.Record({\n    updated_at: IDL.Nat64,\n    session_id: IDL.Text,\n    metadata: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))),\n    name: IDL.Text,\n    created_at: IDL.Nat64,\n    satellite_id: IDL.Principal,\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const AnalyticsTrackEvents = IDL.Record({\n    total: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat32))\n  });\n  const HttpRequest = IDL.Record({\n    url: IDL.Text,\n    method: IDL.Text,\n    body: IDL.Vec(IDL.Nat8),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    certificate_version: IDL.Opt(IDL.Nat16)\n  });\n  const HttpResponse = IDL.Record({\n    body: IDL.Vec(IDL.Nat8),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    upgrade: IDL.Opt(IDL.Bool),\n    status_code: IDL.Nat16\n  });\n  const OrbiterSatelliteFeatures = IDL.Record({\n    performance_metrics: IDL.Bool,\n    track_events: IDL.Bool,\n    page_views: IDL.Bool\n  });\n  const OrbiterSatelliteConfig = IDL.Record({\n    updated_at: IDL.Nat64,\n    features: IDL.Opt(OrbiterSatelliteFeatures),\n    restricted_origin: IDL.Opt(IDL.Text),\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const MemorySize = IDL.Record({stable: IDL.Nat64, heap: IDL.Nat64});\n  const SetAccessKey = IDL.Record({\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    kind: IDL.Opt(AccessKeyKind),\n    scope: AccessKeyScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const SetControllersArgs = IDL.Record({\n    controller: SetAccessKey,\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const SetPageView = IDL.Record({\n    client: IDL.Opt(PageViewClient),\n    title: IDL.Text,\n    updated_at: IDL.Opt(IDL.Nat64),\n    referrer: IDL.Opt(IDL.Text),\n    time_zone: IDL.Text,\n    session_id: IDL.Text,\n    campaign: IDL.Opt(PageViewCampaign),\n    href: IDL.Text,\n    satellite_id: IDL.Principal,\n    device: PageViewDevice,\n    version: IDL.Opt(IDL.Nat64),\n    user_agent: IDL.Opt(IDL.Text)\n  });\n  const Result = IDL.Variant({Ok: PageView, Err: IDL.Text});\n  const Result_1 = IDL.Variant({\n    Ok: IDL.Null,\n    Err: IDL.Vec(IDL.Tuple(AnalyticKey, IDL.Text))\n  });\n  const SetPerformanceMetric = IDL.Record({\n    session_id: IDL.Text,\n    data: PerformanceData,\n    href: IDL.Text,\n    metric_name: PerformanceMetricName,\n    satellite_id: IDL.Principal,\n    version: IDL.Opt(IDL.Nat64),\n    user_agent: IDL.Opt(IDL.Text)\n  });\n  const Result_2 = IDL.Variant({Ok: PerformanceMetric, Err: IDL.Text});\n  const SetSatelliteConfig = IDL.Record({\n    features: IDL.Opt(OrbiterSatelliteFeatures),\n    restricted_origin: IDL.Opt(IDL.Text),\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const SetTrackEvent = IDL.Record({\n    updated_at: IDL.Opt(IDL.Nat64),\n    session_id: IDL.Text,\n    metadata: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))),\n    name: IDL.Text,\n    satellite_id: IDL.Principal,\n    version: IDL.Opt(IDL.Nat64),\n    user_agent: IDL.Opt(IDL.Text)\n  });\n  const Result_3 = IDL.Variant({Ok: TrackEvent, Err: IDL.Text});\n\n  return IDL.Service({\n    del_controllers: IDL.Func(\n      [DeleteControllersArgs],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, AccessKey))],\n      []\n    ),\n    del_satellite_config: IDL.Func([IDL.Principal, DelSatelliteConfig], [], []),\n    deposit_cycles: IDL.Func([DepositCyclesArgs], [], []),\n    get_page_views: IDL.Func([GetAnalytics], [IDL.Vec(IDL.Tuple(AnalyticKey, PageView))], []),\n    get_page_views_analytics_clients: IDL.Func([GetAnalytics], [AnalyticsClientsPageViews], []),\n    get_page_views_analytics_metrics: IDL.Func([GetAnalytics], [AnalyticsMetricsPageViews], []),\n    get_page_views_analytics_top_10: IDL.Func([GetAnalytics], [AnalyticsTop10PageViews], []),\n    get_performance_metrics: IDL.Func(\n      [GetAnalytics],\n      [IDL.Vec(IDL.Tuple(AnalyticKey, PerformanceMetric))],\n      []\n    ),\n    get_performance_metrics_analytics_web_vitals: IDL.Func(\n      [GetAnalytics],\n      [AnalyticsWebVitalsPerformanceMetrics],\n      []\n    ),\n    get_track_events: IDL.Func([GetAnalytics], [IDL.Vec(IDL.Tuple(AnalyticKey, TrackEvent))], []),\n    get_track_events_analytics: IDL.Func([GetAnalytics], [AnalyticsTrackEvents], []),\n    http_request: IDL.Func([HttpRequest], [HttpResponse], []),\n    http_request_update: IDL.Func([HttpRequest], [HttpResponse], []),\n    list_controllers: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Principal, AccessKey))], []),\n    list_satellite_configs: IDL.Func(\n      [],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, OrbiterSatelliteConfig))],\n      []\n    ),\n    memory_size: IDL.Func([], [MemorySize], []),\n    set_controllers: IDL.Func(\n      [SetControllersArgs],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, AccessKey))],\n      []\n    ),\n    set_page_view: IDL.Func([AnalyticKey, SetPageView], [Result], []),\n    set_page_views: IDL.Func([IDL.Vec(IDL.Tuple(AnalyticKey, SetPageView))], [Result_1], []),\n    set_performance_metric: IDL.Func([AnalyticKey, SetPerformanceMetric], [Result_2], []),\n    set_performance_metrics: IDL.Func(\n      [IDL.Vec(IDL.Tuple(AnalyticKey, SetPerformanceMetric))],\n      [Result_1],\n      []\n    ),\n    set_satellite_configs: IDL.Func(\n      [IDL.Vec(IDL.Tuple(IDL.Principal, SetSatelliteConfig))],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, OrbiterSatelliteConfig))],\n      []\n    ),\n    set_track_event: IDL.Func([AnalyticKey, SetTrackEvent], [Result_3], []),\n    set_track_events: IDL.Func([IDL.Vec(IDL.Tuple(AnalyticKey, SetTrackEvent))], [Result_1], [])\n  });\n};\n\nexport const init = ({IDL}) => {\n  const InitOrbiterArgs = IDL.Record({\n    controllers: IDL.Vec(IDL.Principal)\n  });\n\n  return [InitOrbiterArgs];\n};\n", "// @ts-ignore\nexport const idlFactory = ({IDL}) => {\n  const CommitBatch = IDL.Record({\n    batch_id: IDL.Nat,\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    chunk_ids: IDL.Vec(IDL.Nat)\n  });\n  const DeleteControllersArgs = IDL.Record({\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const Controller = IDL.Record({\n    updated_at: IDL.Nat64,\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    created_at: IDL.Nat64,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const DelDoc = IDL.Record({updated_at: IDL.Opt(IDL.Nat64)});\n  const StorageConfig = IDL.Record({\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))))\n  });\n  const Config = IDL.Record({storage: StorageConfig});\n  const Doc = IDL.Record({\n    updated_at: IDL.Nat64,\n    owner: IDL.Principal,\n    data: IDL.Vec(IDL.Nat8),\n    created_at: IDL.Nat64\n  });\n  const HttpRequest = IDL.Record({\n    url: IDL.Text,\n    method: IDL.Text,\n    body: IDL.Vec(IDL.Nat8),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))\n  });\n  const StreamingCallbackToken = IDL.Record({\n    token: IDL.Opt(IDL.Text),\n    sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    index: IDL.Nat64,\n    encoding_type: IDL.Text,\n    full_path: IDL.Text\n  });\n  const StreamingStrategy = IDL.Variant({\n    Callback: IDL.Record({\n      token: StreamingCallbackToken,\n      callback: IDL.Func([], [], [])\n    })\n  });\n  const HttpResponse = IDL.Record({\n    body: IDL.Vec(IDL.Nat8),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    streaming_strategy: IDL.Opt(StreamingStrategy),\n    status_code: IDL.Nat16\n  });\n  const StreamingCallbackHttpResponse = IDL.Record({\n    token: IDL.Opt(StreamingCallbackToken),\n    body: IDL.Vec(IDL.Nat8)\n  });\n  const InitAssetKey = IDL.Record({\n    token: IDL.Opt(IDL.Text),\n    collection: IDL.Text,\n    name: IDL.Text,\n    encoding_type: IDL.Opt(IDL.Text),\n    full_path: IDL.Text\n  });\n  const InitUploadResult = IDL.Record({batch_id: IDL.Nat});\n  const ListOrderField = IDL.Variant({\n    UpdatedAt: IDL.Null,\n    Keys: IDL.Null,\n    CreatedAt: IDL.Null\n  });\n  const ListOrder = IDL.Record({field: ListOrderField, desc: IDL.Bool});\n  const ListPaginate = IDL.Record({\n    start_after: IDL.Opt(IDL.Text),\n    limit: IDL.Opt(IDL.Nat64)\n  });\n  const ListParams = IDL.Record({\n    order: IDL.Opt(ListOrder),\n    owner: IDL.Opt(IDL.Principal),\n    matcher: IDL.Opt(IDL.Text),\n    paginate: IDL.Opt(ListPaginate)\n  });\n  const AssetKey = IDL.Record({\n    token: IDL.Opt(IDL.Text),\n    collection: IDL.Text,\n    owner: IDL.Principal,\n    name: IDL.Text,\n    full_path: IDL.Text\n  });\n  const AssetEncodingNoContent = IDL.Record({\n    modified: IDL.Nat64,\n    sha256: IDL.Vec(IDL.Nat8),\n    total_length: IDL.Nat\n  });\n  const AssetNoContent = IDL.Record({\n    key: AssetKey,\n    updated_at: IDL.Nat64,\n    encodings: IDL.Vec(IDL.Tuple(IDL.Text, AssetEncodingNoContent)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    created_at: IDL.Nat64\n  });\n  const ListResults = IDL.Record({\n    matches_length: IDL.Nat64,\n    length: IDL.Nat64,\n    items: IDL.Vec(IDL.Tuple(IDL.Text, AssetNoContent))\n  });\n  const CustomDomain = IDL.Record({\n    updated_at: IDL.Nat64,\n    created_at: IDL.Nat64,\n    bn_id: IDL.Opt(IDL.Text)\n  });\n  const ListResults_1 = IDL.Record({\n    matches_length: IDL.Nat64,\n    length: IDL.Nat64,\n    items: IDL.Vec(IDL.Tuple(IDL.Text, Doc))\n  });\n  const RulesType = IDL.Variant({Db: IDL.Null, Storage: IDL.Null});\n  const Permission = IDL.Variant({\n    Controllers: IDL.Null,\n    Private: IDL.Null,\n    Public: IDL.Null,\n    Managed: IDL.Null\n  });\n  const Rule = IDL.Record({\n    updated_at: IDL.Nat64,\n    max_size: IDL.Opt(IDL.Nat),\n    read: Permission,\n    created_at: IDL.Nat64,\n    write: Permission\n  });\n  const SetController = IDL.Record({\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const SetControllersArgs = IDL.Record({\n    controller: SetController,\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const SetDoc = IDL.Record({\n    updated_at: IDL.Opt(IDL.Nat64),\n    data: IDL.Vec(IDL.Nat8)\n  });\n  const SetRule = IDL.Record({\n    updated_at: IDL.Opt(IDL.Nat64),\n    max_size: IDL.Opt(IDL.Nat),\n    read: Permission,\n    write: Permission\n  });\n  const Chunk = IDL.Record({\n    content: IDL.Vec(IDL.Nat8),\n    batch_id: IDL.Nat\n  });\n  const UploadChunk = IDL.Record({chunk_id: IDL.Nat});\n  return IDL.Service({\n    commit_asset_upload: IDL.Func([CommitBatch], [], []),\n    del_asset: IDL.Func([IDL.Text, IDL.Text], [], []),\n    del_assets: IDL.Func([IDL.Opt(IDL.Text)], [], []),\n    del_controllers: IDL.Func(\n      [DeleteControllersArgs],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, Controller))],\n      []\n    ),\n    del_custom_domain: IDL.Func([IDL.Text], [], []),\n    del_doc: IDL.Func([IDL.Text, IDL.Text, DelDoc], [], []),\n    get_config: IDL.Func([], [Config], []),\n    get_doc: IDL.Func([IDL.Text, IDL.Text], [IDL.Opt(Doc)], ['query']),\n    http_request: IDL.Func([HttpRequest], [HttpResponse], ['query']),\n    http_request_streaming_callback: IDL.Func(\n      [StreamingCallbackToken],\n      [StreamingCallbackHttpResponse],\n      ['query']\n    ),\n    init_asset_upload: IDL.Func([InitAssetKey], [InitUploadResult], []),\n    list_assets: IDL.Func([IDL.Opt(IDL.Text), ListParams], [ListResults], ['query']),\n    list_controllers: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Principal, Controller))], ['query']),\n    list_custom_domains: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, CustomDomain))], ['query']),\n    list_docs: IDL.Func([IDL.Text, ListParams], [ListResults_1], ['query']),\n    list_rules: IDL.Func([RulesType], [IDL.Vec(IDL.Tuple(IDL.Text, Rule))], ['query']),\n    set_config: IDL.Func([Config], [], []),\n    set_controllers: IDL.Func(\n      [SetControllersArgs],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, Controller))],\n      []\n    ),\n    set_custom_domain: IDL.Func([IDL.Text, IDL.Opt(IDL.Text)], [], []),\n    set_doc: IDL.Func([IDL.Text, IDL.Text, SetDoc], [Doc], []),\n    set_rule: IDL.Func([RulesType, IDL.Text, SetRule], [], []),\n    upload_asset_chunk: IDL.Func([Chunk], [UploadChunk], []),\n    version: IDL.Func([], [IDL.Text], ['query'])\n  });\n};\n// @ts-ignore\nexport const init = ({IDL}) => {\n  return [];\n};\n", "// @ts-ignore\nexport const idlFactory = ({IDL}) => {\n  const CommitBatch = IDL.Record({\n    batch_id: IDL.Nat,\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    chunk_ids: IDL.Vec(IDL.Nat)\n  });\n  const ListOrderField = IDL.Variant({\n    UpdatedAt: IDL.Null,\n    Keys: IDL.Null,\n    CreatedAt: IDL.Null\n  });\n  const ListOrder = IDL.Record({field: ListOrderField, desc: IDL.Bool});\n  const TimestampMatcher = IDL.Variant({\n    Equal: IDL.Nat64,\n    Between: IDL.Tuple(IDL.Nat64, IDL.Nat64),\n    GreaterThan: IDL.Nat64,\n    LessThan: IDL.Nat64\n  });\n  const ListMatcher = IDL.Record({\n    key: IDL.Opt(IDL.Text),\n    updated_at: IDL.Opt(TimestampMatcher),\n    description: IDL.Opt(IDL.Text),\n    created_at: IDL.Opt(TimestampMatcher)\n  });\n  const ListPaginate = IDL.Record({\n    start_after: IDL.Opt(IDL.Text),\n    limit: IDL.Opt(IDL.Nat64)\n  });\n  const ListParams = IDL.Record({\n    order: IDL.Opt(ListOrder),\n    owner: IDL.Opt(IDL.Principal),\n    matcher: IDL.Opt(ListMatcher),\n    paginate: IDL.Opt(ListPaginate)\n  });\n  const DeleteControllersArgs = IDL.Record({\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const ControllerScope = IDL.Variant({\n    Write: IDL.Null,\n    Admin: IDL.Null\n  });\n  const Controller = IDL.Record({\n    updated_at: IDL.Nat64,\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    created_at: IDL.Nat64,\n    scope: ControllerScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const DelDoc = IDL.Record({version: IDL.Opt(IDL.Nat64)});\n  const CollectionType = IDL.Variant({Db: IDL.Null, Storage: IDL.Null});\n  const DelRule = IDL.Record({version: IDL.Opt(IDL.Nat64)});\n  const DepositCyclesArgs = IDL.Record({\n    cycles: IDL.Nat,\n    destination_id: IDL.Principal\n  });\n  const AssetKey = IDL.Record({\n    token: IDL.Opt(IDL.Text),\n    collection: IDL.Text,\n    owner: IDL.Principal,\n    name: IDL.Text,\n    description: IDL.Opt(IDL.Text),\n    full_path: IDL.Text\n  });\n  const AssetEncodingNoContent = IDL.Record({\n    modified: IDL.Nat64,\n    sha256: IDL.Vec(IDL.Nat8),\n    total_length: IDL.Nat\n  });\n  const AssetNoContent = IDL.Record({\n    key: AssetKey,\n    updated_at: IDL.Nat64,\n    encodings: IDL.Vec(IDL.Tuple(IDL.Text, AssetEncodingNoContent)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const AuthenticationConfigInternetIdentity = IDL.Record({\n    derivation_origin: IDL.Opt(IDL.Text),\n    external_alternative_origins: IDL.Opt(IDL.Vec(IDL.Text))\n  });\n  const AuthenticationConfig = IDL.Record({\n    internet_identity: IDL.Opt(AuthenticationConfigInternetIdentity)\n  });\n  const ConfigMaxMemorySize = IDL.Record({\n    stable: IDL.Opt(IDL.Nat64),\n    heap: IDL.Opt(IDL.Nat64)\n  });\n  const DbConfig = IDL.Record({\n    max_memory_size: IDL.Opt(ConfigMaxMemorySize)\n  });\n  const StorageConfigIFrame = IDL.Variant({\n    Deny: IDL.Null,\n    AllowAny: IDL.Null,\n    SameOrigin: IDL.Null\n  });\n  const StorageConfigRawAccess = IDL.Variant({\n    Deny: IDL.Null,\n    Allow: IDL.Null\n  });\n  const StorageConfigRedirect = IDL.Record({\n    status_code: IDL.Nat16,\n    location: IDL.Text\n  });\n  const StorageConfig = IDL.Record({\n    iframe: IDL.Opt(StorageConfigIFrame),\n    rewrites: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)))),\n    max_memory_size: IDL.Opt(ConfigMaxMemorySize),\n    raw_access: IDL.Opt(StorageConfigRawAccess),\n    redirects: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, StorageConfigRedirect)))\n  });\n  const Config = IDL.Record({\n    db: IDL.Opt(DbConfig),\n    authentication: IDL.Opt(AuthenticationConfig),\n    storage: StorageConfig\n  });\n  const Doc = IDL.Record({\n    updated_at: IDL.Nat64,\n    owner: IDL.Principal,\n    data: IDL.Vec(IDL.Nat8),\n    description: IDL.Opt(IDL.Text),\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const Memory = IDL.Variant({Heap: IDL.Null, Stable: IDL.Null});\n  const Permission = IDL.Variant({\n    Controllers: IDL.Null,\n    Private: IDL.Null,\n    Public: IDL.Null,\n    Managed: IDL.Null\n  });\n  const RateConfig = IDL.Record({\n    max_tokens: IDL.Nat64,\n    time_per_token_ns: IDL.Nat64\n  });\n  const Rule = IDL.Record({\n    max_capacity: IDL.Opt(IDL.Nat32),\n    memory: IDL.Opt(Memory),\n    updated_at: IDL.Nat64,\n    max_size: IDL.Opt(IDL.Nat),\n    read: Permission,\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64),\n    mutable_permissions: IDL.Opt(IDL.Bool),\n    rate_config: IDL.Opt(RateConfig),\n    write: Permission,\n    max_changes_per_user: IDL.Opt(IDL.Nat32)\n  });\n  const HttpRequest = IDL.Record({\n    url: IDL.Text,\n    method: IDL.Text,\n    body: IDL.Vec(IDL.Nat8),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    certificate_version: IDL.Opt(IDL.Nat16)\n  });\n  const StreamingCallbackToken = IDL.Record({\n    memory: Memory,\n    token: IDL.Opt(IDL.Text),\n    sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    index: IDL.Nat64,\n    encoding_type: IDL.Text,\n    full_path: IDL.Text\n  });\n  const StreamingStrategy = IDL.Variant({\n    Callback: IDL.Record({\n      token: StreamingCallbackToken,\n      callback: IDL.Func([], [], ['query'])\n    })\n  });\n  const HttpResponse = IDL.Record({\n    body: IDL.Vec(IDL.Nat8),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    streaming_strategy: IDL.Opt(StreamingStrategy),\n    status_code: IDL.Nat16\n  });\n  const StreamingCallbackHttpResponse = IDL.Record({\n    token: IDL.Opt(StreamingCallbackToken),\n    body: IDL.Vec(IDL.Nat8)\n  });\n  const InitAssetKey = IDL.Record({\n    token: IDL.Opt(IDL.Text),\n    collection: IDL.Text,\n    name: IDL.Text,\n    description: IDL.Opt(IDL.Text),\n    encoding_type: IDL.Opt(IDL.Text),\n    full_path: IDL.Text\n  });\n  const InitUploadResult = IDL.Record({batch_id: IDL.Nat});\n  const ListResults = IDL.Record({\n    matches_pages: IDL.Opt(IDL.Nat64),\n    matches_length: IDL.Nat64,\n    items_page: IDL.Opt(IDL.Nat64),\n    items: IDL.Vec(IDL.Tuple(IDL.Text, AssetNoContent)),\n    items_length: IDL.Nat64\n  });\n  const CustomDomain = IDL.Record({\n    updated_at: IDL.Nat64,\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64),\n    bn_id: IDL.Opt(IDL.Text)\n  });\n  const ListResults_1 = IDL.Record({\n    matches_pages: IDL.Opt(IDL.Nat64),\n    matches_length: IDL.Nat64,\n    items_page: IDL.Opt(IDL.Nat64),\n    items: IDL.Vec(IDL.Tuple(IDL.Text, Doc)),\n    items_length: IDL.Nat64\n  });\n  const MemorySize = IDL.Record({stable: IDL.Nat64, heap: IDL.Nat64});\n  const SetController = IDL.Record({\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    scope: ControllerScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const SetControllersArgs = IDL.Record({\n    controller: SetController,\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const SetDoc = IDL.Record({\n    data: IDL.Vec(IDL.Nat8),\n    description: IDL.Opt(IDL.Text),\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const SetRule = IDL.Record({\n    max_capacity: IDL.Opt(IDL.Nat32),\n    memory: IDL.Opt(Memory),\n    max_size: IDL.Opt(IDL.Nat),\n    read: Permission,\n    version: IDL.Opt(IDL.Nat64),\n    mutable_permissions: IDL.Opt(IDL.Bool),\n    rate_config: IDL.Opt(RateConfig),\n    write: Permission,\n    max_changes_per_user: IDL.Opt(IDL.Nat32)\n  });\n  const UploadChunk = IDL.Record({\n    content: IDL.Vec(IDL.Nat8),\n    batch_id: IDL.Nat,\n    order_id: IDL.Opt(IDL.Nat)\n  });\n  const UploadChunkResult = IDL.Record({chunk_id: IDL.Nat});\n  return IDL.Service({\n    build_version: IDL.Func([], [IDL.Text], ['query']),\n    commit_asset_upload: IDL.Func([CommitBatch], [], []),\n    count_assets: IDL.Func([IDL.Text, ListParams], [IDL.Nat64], ['query']),\n    count_collection_assets: IDL.Func([IDL.Text], [IDL.Nat64], ['query']),\n    count_collection_docs: IDL.Func([IDL.Text], [IDL.Nat64], ['query']),\n    count_docs: IDL.Func([IDL.Text, ListParams], [IDL.Nat64], ['query']),\n    del_asset: IDL.Func([IDL.Text, IDL.Text], [], []),\n    del_assets: IDL.Func([IDL.Text], [], []),\n    del_controllers: IDL.Func(\n      [DeleteControllersArgs],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, Controller))],\n      []\n    ),\n    del_custom_domain: IDL.Func([IDL.Text], [], []),\n    del_doc: IDL.Func([IDL.Text, IDL.Text, DelDoc], [], []),\n    del_docs: IDL.Func([IDL.Text], [], []),\n    del_filtered_assets: IDL.Func([IDL.Text, ListParams], [], []),\n    del_filtered_docs: IDL.Func([IDL.Text, ListParams], [], []),\n    del_many_assets: IDL.Func([IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))], [], []),\n    del_many_docs: IDL.Func([IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text, DelDoc))], [], []),\n    del_rule: IDL.Func([CollectionType, IDL.Text, DelRule], [], []),\n    deposit_cycles: IDL.Func([DepositCyclesArgs], [], []),\n    get_asset: IDL.Func([IDL.Text, IDL.Text], [IDL.Opt(AssetNoContent)], ['query']),\n    get_auth_config: IDL.Func([], [IDL.Opt(AuthenticationConfig)], ['query']),\n    get_config: IDL.Func([], [Config], []),\n    get_db_config: IDL.Func([], [IDL.Opt(DbConfig)], ['query']),\n    get_doc: IDL.Func([IDL.Text, IDL.Text], [IDL.Opt(Doc)], ['query']),\n    get_many_assets: IDL.Func(\n      [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n      [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Opt(AssetNoContent)))],\n      ['query']\n    ),\n    get_many_docs: IDL.Func(\n      [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n      [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Opt(Doc)))],\n      ['query']\n    ),\n    get_rule: IDL.Func([CollectionType, IDL.Text], [IDL.Opt(Rule)], ['query']),\n    get_storage_config: IDL.Func([], [StorageConfig], ['query']),\n    http_request: IDL.Func([HttpRequest], [HttpResponse], ['query']),\n    http_request_streaming_callback: IDL.Func(\n      [StreamingCallbackToken],\n      [StreamingCallbackHttpResponse],\n      ['query']\n    ),\n    init_asset_upload: IDL.Func([InitAssetKey], [InitUploadResult], []),\n    list_assets: IDL.Func([IDL.Text, ListParams], [ListResults], ['query']),\n    list_controllers: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Principal, Controller))], ['query']),\n    list_custom_domains: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, CustomDomain))], ['query']),\n    list_docs: IDL.Func([IDL.Text, ListParams], [ListResults_1], ['query']),\n    list_rules: IDL.Func([CollectionType], [IDL.Vec(IDL.Tuple(IDL.Text, Rule))], ['query']),\n    memory_size: IDL.Func([], [MemorySize], ['query']),\n    set_auth_config: IDL.Func([AuthenticationConfig], [], []),\n    set_controllers: IDL.Func(\n      [SetControllersArgs],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, Controller))],\n      []\n    ),\n    set_custom_domain: IDL.Func([IDL.Text, IDL.Opt(IDL.Text)], [], []),\n    set_db_config: IDL.Func([DbConfig], [], []),\n    set_doc: IDL.Func([IDL.Text, IDL.Text, SetDoc], [Doc], []),\n    set_many_docs: IDL.Func(\n      [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text, SetDoc))],\n      [IDL.Vec(IDL.Tuple(IDL.Text, Doc))],\n      []\n    ),\n    set_rule: IDL.Func([CollectionType, IDL.Text, SetRule], [Rule], []),\n    set_storage_config: IDL.Func([StorageConfig], [], []),\n    upload_asset_chunk: IDL.Func([UploadChunk], [UploadChunkResult], []),\n    version: IDL.Func([], [IDL.Text], ['query'])\n  });\n};\n// @ts-ignore\nexport const init = ({IDL}) => {\n  return [];\n};\n", "// @ts-ignore\nexport const idlFactory = ({IDL}) => {\n  const DeleteControllersArgs = IDL.Record({\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const ControllerScope = IDL.Variant({\n    Write: IDL.Null,\n    Admin: IDL.Null\n  });\n  const Controller = IDL.Record({\n    updated_at: IDL.Nat64,\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    created_at: IDL.Nat64,\n    scope: ControllerScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const DelSatelliteConfig = IDL.Record({version: IDL.Opt(IDL.Nat64)});\n  const DepositCyclesArgs = IDL.Record({\n    cycles: IDL.Nat,\n    destination_id: IDL.Principal\n  });\n  const GetAnalytics = IDL.Record({\n    to: IDL.Opt(IDL.Nat64),\n    from: IDL.Opt(IDL.Nat64),\n    satellite_id: IDL.Opt(IDL.Principal)\n  });\n  const AnalyticKey = IDL.Record({\n    key: IDL.Text,\n    collected_at: IDL.Nat64\n  });\n  const PageViewDevice = IDL.Record({\n    inner_height: IDL.Nat16,\n    inner_width: IDL.Nat16\n  });\n  const PageView = IDL.Record({\n    title: IDL.Text,\n    updated_at: IDL.Nat64,\n    referrer: IDL.Opt(IDL.Text),\n    time_zone: IDL.Text,\n    session_id: IDL.Text,\n    href: IDL.Text,\n    created_at: IDL.Nat64,\n    satellite_id: IDL.Principal,\n    device: PageViewDevice,\n    version: IDL.Opt(IDL.Nat64),\n    user_agent: IDL.Opt(IDL.Text)\n  });\n  const AnalyticsBrowsersPageViews = IDL.Record({\n    safari: IDL.Float64,\n    opera: IDL.Float64,\n    others: IDL.Float64,\n    firefox: IDL.Float64,\n    chrome: IDL.Float64\n  });\n  const AnalyticsDevicesPageViews = IDL.Record({\n    desktop: IDL.Float64,\n    others: IDL.Float64,\n    mobile: IDL.Float64\n  });\n  const AnalyticsClientsPageViews = IDL.Record({\n    browsers: AnalyticsBrowsersPageViews,\n    devices: AnalyticsDevicesPageViews\n  });\n  const CalendarDate = IDL.Record({\n    day: IDL.Nat8,\n    month: IDL.Nat8,\n    year: IDL.Int32\n  });\n  const AnalyticsMetricsPageViews = IDL.Record({\n    bounce_rate: IDL.Float64,\n    average_page_views_per_session: IDL.Float64,\n    daily_total_page_views: IDL.Vec(IDL.Tuple(CalendarDate, IDL.Nat32)),\n    total_page_views: IDL.Nat32,\n    unique_page_views: IDL.Nat64,\n    unique_sessions: IDL.Nat64\n  });\n  const AnalyticsTop10PageViews = IDL.Record({\n    referrers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat32)),\n    pages: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat32))\n  });\n  const NavigationType = IDL.Variant({\n    Navigate: IDL.Null,\n    Restore: IDL.Null,\n    Reload: IDL.Null,\n    BackForward: IDL.Null,\n    BackForwardCache: IDL.Null,\n    Prerender: IDL.Null\n  });\n  const WebVitalsMetric = IDL.Record({\n    id: IDL.Text,\n    value: IDL.Float64,\n    navigation_type: IDL.Opt(NavigationType),\n    delta: IDL.Float64\n  });\n  const PerformanceData = IDL.Variant({WebVitalsMetric: WebVitalsMetric});\n  const PerformanceMetricName = IDL.Variant({\n    CLS: IDL.Null,\n    FCP: IDL.Null,\n    INP: IDL.Null,\n    LCP: IDL.Null,\n    TTFB: IDL.Null\n  });\n  const PerformanceMetric = IDL.Record({\n    updated_at: IDL.Nat64,\n    session_id: IDL.Text,\n    data: PerformanceData,\n    href: IDL.Text,\n    metric_name: PerformanceMetricName,\n    created_at: IDL.Nat64,\n    satellite_id: IDL.Principal,\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const AnalyticsWebVitalsPageMetrics = IDL.Record({\n    cls: IDL.Opt(IDL.Float64),\n    fcp: IDL.Opt(IDL.Float64),\n    inp: IDL.Opt(IDL.Float64),\n    lcp: IDL.Opt(IDL.Float64),\n    ttfb: IDL.Opt(IDL.Float64)\n  });\n  const AnalyticsWebVitalsPerformanceMetrics = IDL.Record({\n    overall: AnalyticsWebVitalsPageMetrics,\n    pages: IDL.Vec(IDL.Tuple(IDL.Text, AnalyticsWebVitalsPageMetrics))\n  });\n  const TrackEvent = IDL.Record({\n    updated_at: IDL.Nat64,\n    session_id: IDL.Text,\n    metadata: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))),\n    name: IDL.Text,\n    created_at: IDL.Nat64,\n    satellite_id: IDL.Principal,\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const AnalyticsTrackEvents = IDL.Record({\n    total: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat32))\n  });\n  const OrbiterSatelliteFeatures = IDL.Record({\n    performance_metrics: IDL.Bool,\n    track_events: IDL.Bool,\n    page_views: IDL.Bool\n  });\n  const OrbiterSatelliteConfig = IDL.Record({\n    updated_at: IDL.Nat64,\n    features: IDL.Opt(OrbiterSatelliteFeatures),\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const MemorySize = IDL.Record({stable: IDL.Nat64, heap: IDL.Nat64});\n  const SetController = IDL.Record({\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    scope: ControllerScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const SetControllersArgs = IDL.Record({\n    controller: SetController,\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const SetPageView = IDL.Record({\n    title: IDL.Text,\n    updated_at: IDL.Opt(IDL.Nat64),\n    referrer: IDL.Opt(IDL.Text),\n    time_zone: IDL.Text,\n    session_id: IDL.Text,\n    href: IDL.Text,\n    satellite_id: IDL.Principal,\n    device: PageViewDevice,\n    version: IDL.Opt(IDL.Nat64),\n    user_agent: IDL.Opt(IDL.Text)\n  });\n  const Result = IDL.Variant({Ok: PageView, Err: IDL.Text});\n  const Result_1 = IDL.Variant({\n    Ok: IDL.Null,\n    Err: IDL.Vec(IDL.Tuple(AnalyticKey, IDL.Text))\n  });\n  const SetPerformanceMetric = IDL.Record({\n    session_id: IDL.Text,\n    data: PerformanceData,\n    href: IDL.Text,\n    metric_name: PerformanceMetricName,\n    satellite_id: IDL.Principal,\n    version: IDL.Opt(IDL.Nat64),\n    user_agent: IDL.Opt(IDL.Text)\n  });\n  const Result_2 = IDL.Variant({Ok: PerformanceMetric, Err: IDL.Text});\n  const SetSatelliteConfig = IDL.Record({\n    features: IDL.Opt(OrbiterSatelliteFeatures),\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const SetTrackEvent = IDL.Record({\n    updated_at: IDL.Opt(IDL.Nat64),\n    session_id: IDL.Text,\n    metadata: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))),\n    name: IDL.Text,\n    satellite_id: IDL.Principal,\n    version: IDL.Opt(IDL.Nat64),\n    user_agent: IDL.Opt(IDL.Text)\n  });\n  const Result_3 = IDL.Variant({Ok: TrackEvent, Err: IDL.Text});\n  return IDL.Service({\n    del_controllers: IDL.Func(\n      [DeleteControllersArgs],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, Controller))],\n      []\n    ),\n    del_satellite_config: IDL.Func([IDL.Principal, DelSatelliteConfig], [], []),\n    deposit_cycles: IDL.Func([DepositCyclesArgs], [], []),\n    get_page_views: IDL.Func(\n      [GetAnalytics],\n      [IDL.Vec(IDL.Tuple(AnalyticKey, PageView))],\n      ['query']\n    ),\n    get_page_views_analytics_clients: IDL.Func(\n      [GetAnalytics],\n      [AnalyticsClientsPageViews],\n      ['query']\n    ),\n    get_page_views_analytics_metrics: IDL.Func(\n      [GetAnalytics],\n      [AnalyticsMetricsPageViews],\n      ['query']\n    ),\n    get_page_views_analytics_top_10: IDL.Func([GetAnalytics], [AnalyticsTop10PageViews], ['query']),\n    get_performance_metrics: IDL.Func(\n      [GetAnalytics],\n      [IDL.Vec(IDL.Tuple(AnalyticKey, PerformanceMetric))],\n      ['query']\n    ),\n    get_performance_metrics_analytics_web_vitals: IDL.Func(\n      [GetAnalytics],\n      [AnalyticsWebVitalsPerformanceMetrics],\n      ['query']\n    ),\n    get_track_events: IDL.Func(\n      [GetAnalytics],\n      [IDL.Vec(IDL.Tuple(AnalyticKey, TrackEvent))],\n      ['query']\n    ),\n    get_track_events_analytics: IDL.Func([GetAnalytics], [AnalyticsTrackEvents], ['query']),\n    list_controllers: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Principal, Controller))], ['query']),\n    list_satellite_configs: IDL.Func(\n      [],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, OrbiterSatelliteConfig))],\n      ['query']\n    ),\n    memory_size: IDL.Func([], [MemorySize], ['query']),\n    set_controllers: IDL.Func(\n      [SetControllersArgs],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, Controller))],\n      []\n    ),\n    set_page_view: IDL.Func([AnalyticKey, SetPageView], [Result], []),\n    set_page_views: IDL.Func([IDL.Vec(IDL.Tuple(AnalyticKey, SetPageView))], [Result_1], []),\n    set_performance_metric: IDL.Func([AnalyticKey, SetPerformanceMetric], [Result_2], []),\n    set_performance_metrics: IDL.Func(\n      [IDL.Vec(IDL.Tuple(AnalyticKey, SetPerformanceMetric))],\n      [Result_1],\n      []\n    ),\n    set_satellite_configs: IDL.Func(\n      [IDL.Vec(IDL.Tuple(IDL.Principal, SetSatelliteConfig))],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, OrbiterSatelliteConfig))],\n      []\n    ),\n    set_track_event: IDL.Func([AnalyticKey, SetTrackEvent], [Result_3], []),\n    set_track_events: IDL.Func([IDL.Vec(IDL.Tuple(AnalyticKey, SetTrackEvent))], [Result_1], []),\n    version: IDL.Func([], [IDL.Text], ['query'])\n  });\n};\n// @ts-ignore\nexport const init = ({IDL}) => {\n  return [];\n};\n", "// @ts-ignore\nexport const idlFactory = ({IDL}) => {\n  const CyclesThreshold = IDL.Record({\n    fund_cycles: IDL.Nat,\n    min_cycles: IDL.Nat\n  });\n  const CyclesMonitoringStrategy = IDL.Variant({\n    BelowThreshold: CyclesThreshold\n  });\n  const CyclesMonitoring = IDL.Record({\n    strategy: IDL.Opt(CyclesMonitoringStrategy),\n    enabled: IDL.Bool\n  });\n  const Monitoring = IDL.Record({cycles: IDL.Opt(CyclesMonitoring)});\n  const Settings = IDL.Record({monitoring: IDL.Opt(Monitoring)});\n  const Orbiter = IDL.Record({\n    updated_at: IDL.Nat64,\n    orbiter_id: IDL.Principal,\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    created_at: IDL.Nat64,\n    settings: IDL.Opt(Settings)\n  });\n  const CreateCanisterConfig = IDL.Record({\n    subnet_id: IDL.Opt(IDL.Principal),\n    name: IDL.Opt(IDL.Text)\n  });\n  const Satellite = IDL.Record({\n    updated_at: IDL.Nat64,\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    created_at: IDL.Nat64,\n    satellite_id: IDL.Principal,\n    settings: IDL.Opt(Settings)\n  });\n  const DepositCyclesArgs = IDL.Record({\n    cycles: IDL.Nat,\n    destination_id: IDL.Principal\n  });\n  const DepositedCyclesEmailNotification = IDL.Record({\n    to: IDL.Opt(IDL.Text),\n    enabled: IDL.Bool\n  });\n  const CyclesMonitoringConfig = IDL.Record({\n    notification: IDL.Opt(DepositedCyclesEmailNotification),\n    default_strategy: IDL.Opt(CyclesMonitoringStrategy)\n  });\n  const MonitoringConfig = IDL.Record({\n    cycles: IDL.Opt(CyclesMonitoringConfig)\n  });\n  const Config = IDL.Record({monitoring: IDL.Opt(MonitoringConfig)});\n  const GetMonitoringHistory = IDL.Record({\n    to: IDL.Opt(IDL.Nat64),\n    from: IDL.Opt(IDL.Nat64),\n    segment_id: IDL.Principal\n  });\n  const MonitoringHistoryKey = IDL.Record({\n    segment_id: IDL.Principal,\n    created_at: IDL.Nat64,\n    nonce: IDL.Int32\n  });\n  const CyclesBalance = IDL.Record({\n    timestamp: IDL.Nat64,\n    amount: IDL.Nat\n  });\n  const MonitoringHistoryCycles = IDL.Record({\n    deposited_cycles: IDL.Opt(CyclesBalance),\n    cycles: CyclesBalance\n  });\n  const MonitoringHistory = IDL.Record({\n    cycles: IDL.Opt(MonitoringHistoryCycles)\n  });\n  const CyclesMonitoringStatus = IDL.Record({\n    monitored_ids: IDL.Vec(IDL.Principal),\n    running: IDL.Bool\n  });\n  const MonitoringStatus = IDL.Record({\n    cycles: IDL.Opt(CyclesMonitoringStatus)\n  });\n  const MissionControlSettings = IDL.Record({\n    updated_at: IDL.Nat64,\n    created_at: IDL.Nat64,\n    monitoring: IDL.Opt(Monitoring)\n  });\n  const User = IDL.Record({\n    updated_at: IDL.Nat64,\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    user: IDL.Opt(IDL.Principal),\n    created_at: IDL.Nat64,\n    config: IDL.Opt(Config)\n  });\n  const Tokens = IDL.Record({e8s: IDL.Nat64});\n  const Timestamp = IDL.Record({timestamp_nanos: IDL.Nat64});\n  const TransferArgs = IDL.Record({\n    to: IDL.Vec(IDL.Nat8),\n    fee: Tokens,\n    memo: IDL.Nat64,\n    from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n    created_at_time: IDL.Opt(Timestamp),\n    amount: Tokens\n  });\n  const TransferError = IDL.Variant({\n    TxTooOld: IDL.Record({allowed_window_nanos: IDL.Nat64}),\n    BadFee: IDL.Record({expected_fee: Tokens}),\n    TxDuplicate: IDL.Record({duplicate_of: IDL.Nat64}),\n    TxCreatedInFuture: IDL.Null,\n    InsufficientFunds: IDL.Record({balance: Tokens})\n  });\n  const Result = IDL.Variant({Ok: IDL.Nat64, Err: TransferError});\n  const Account = IDL.Record({\n    owner: IDL.Principal,\n    subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n  });\n  const TransferArg = IDL.Record({\n    to: Account,\n    fee: IDL.Opt(IDL.Nat),\n    memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n    from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n    created_at_time: IDL.Opt(IDL.Nat64),\n    amount: IDL.Nat\n  });\n  const TransferError_1 = IDL.Variant({\n    GenericError: IDL.Record({\n      message: IDL.Text,\n      error_code: IDL.Nat\n    }),\n    TemporarilyUnavailable: IDL.Null,\n    BadBurn: IDL.Record({min_burn_amount: IDL.Nat}),\n    Duplicate: IDL.Record({duplicate_of: IDL.Nat}),\n    BadFee: IDL.Record({expected_fee: IDL.Nat}),\n    CreatedInFuture: IDL.Record({ledger_time: IDL.Nat64}),\n    TooOld: IDL.Null,\n    InsufficientFunds: IDL.Record({balance: IDL.Nat})\n  });\n  const Result_1 = IDL.Variant({Ok: IDL.Nat, Err: TransferError_1});\n  const ControllerScope = IDL.Variant({\n    Write: IDL.Null,\n    Admin: IDL.Null\n  });\n  const Controller = IDL.Record({\n    updated_at: IDL.Nat64,\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    created_at: IDL.Nat64,\n    scope: ControllerScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const SetController = IDL.Record({\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    scope: ControllerScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const SegmentsMonitoringStrategy = IDL.Record({\n    ids: IDL.Vec(IDL.Principal),\n    strategy: CyclesMonitoringStrategy\n  });\n  const CyclesMonitoringStartConfig = IDL.Record({\n    orbiters_strategy: IDL.Opt(SegmentsMonitoringStrategy),\n    mission_control_strategy: IDL.Opt(CyclesMonitoringStrategy),\n    satellites_strategy: IDL.Opt(SegmentsMonitoringStrategy)\n  });\n  const MonitoringStartConfig = IDL.Record({\n    cycles_config: IDL.Opt(CyclesMonitoringStartConfig)\n  });\n  const CyclesMonitoringStopConfig = IDL.Record({\n    satellite_ids: IDL.Opt(IDL.Vec(IDL.Principal)),\n    try_mission_control: IDL.Opt(IDL.Bool),\n    orbiter_ids: IDL.Opt(IDL.Vec(IDL.Principal))\n  });\n  const MonitoringStopConfig = IDL.Record({\n    cycles_config: IDL.Opt(CyclesMonitoringStopConfig)\n  });\n  return IDL.Service({\n    add_mission_control_controllers: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n    add_satellites_controllers: IDL.Func([IDL.Vec(IDL.Principal), IDL.Vec(IDL.Principal)], [], []),\n    create_orbiter: IDL.Func([IDL.Opt(IDL.Text)], [Orbiter], []),\n    create_orbiter_with_config: IDL.Func([CreateCanisterConfig], [Orbiter], []),\n    create_satellite: IDL.Func([IDL.Text], [Satellite], []),\n    create_satellite_with_config: IDL.Func([CreateCanisterConfig], [Satellite], []),\n    del_mission_control_controllers: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n    del_orbiter: IDL.Func([IDL.Principal, IDL.Nat], [], []),\n    del_orbiters_controllers: IDL.Func([IDL.Vec(IDL.Principal), IDL.Vec(IDL.Principal)], [], []),\n    del_satellite: IDL.Func([IDL.Principal, IDL.Nat], [], []),\n    del_satellites_controllers: IDL.Func([IDL.Vec(IDL.Principal), IDL.Vec(IDL.Principal)], [], []),\n    deposit_cycles: IDL.Func([DepositCyclesArgs], [], []),\n    get_config: IDL.Func([], [IDL.Opt(Config)], ['query']),\n    get_metadata: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))], ['query']),\n    get_monitoring_history: IDL.Func(\n      [GetMonitoringHistory],\n      [IDL.Vec(IDL.Tuple(MonitoringHistoryKey, MonitoringHistory))],\n      ['query']\n    ),\n    get_monitoring_status: IDL.Func([], [MonitoringStatus], ['query']),\n    get_settings: IDL.Func([], [IDL.Opt(MissionControlSettings)], ['query']),\n    get_user: IDL.Func([], [IDL.Principal], ['query']),\n    get_user_data: IDL.Func([], [User], ['query']),\n    icp_transfer: IDL.Func([TransferArgs], [Result], []),\n    icrc_transfer: IDL.Func([IDL.Principal, TransferArg], [Result_1], []),\n    list_mission_control_controllers: IDL.Func(\n      [],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, Controller))],\n      ['query']\n    ),\n    list_orbiters: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Principal, Orbiter))], ['query']),\n    list_satellites: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Principal, Satellite))], ['query']),\n    remove_mission_control_controllers: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n    remove_satellites_controllers: IDL.Func(\n      [IDL.Vec(IDL.Principal), IDL.Vec(IDL.Principal)],\n      [],\n      []\n    ),\n    set_config: IDL.Func([IDL.Opt(Config)], [], []),\n    set_metadata: IDL.Func([IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))], [], []),\n    set_mission_control_controllers: IDL.Func([IDL.Vec(IDL.Principal), SetController], [], []),\n    set_orbiter: IDL.Func([IDL.Principal, IDL.Opt(IDL.Text)], [Orbiter], []),\n    set_orbiter_metadata: IDL.Func(\n      [IDL.Principal, IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n      [Orbiter],\n      []\n    ),\n    set_orbiters_controllers: IDL.Func(\n      [IDL.Vec(IDL.Principal), IDL.Vec(IDL.Principal), SetController],\n      [],\n      []\n    ),\n    set_satellite: IDL.Func([IDL.Principal, IDL.Opt(IDL.Text)], [Satellite], []),\n    set_satellite_metadata: IDL.Func(\n      [IDL.Principal, IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n      [Satellite],\n      []\n    ),\n    set_satellites_controllers: IDL.Func(\n      [IDL.Vec(IDL.Principal), IDL.Vec(IDL.Principal), SetController],\n      [],\n      []\n    ),\n    start_monitoring: IDL.Func([], [], []),\n    stop_monitoring: IDL.Func([], [], []),\n    top_up: IDL.Func([IDL.Principal, Tokens], [], []),\n    unset_orbiter: IDL.Func([IDL.Principal], [], []),\n    unset_satellite: IDL.Func([IDL.Principal], [], []),\n    update_and_start_monitoring: IDL.Func([MonitoringStartConfig], [], []),\n    update_and_stop_monitoring: IDL.Func([MonitoringStopConfig], [], []),\n    version: IDL.Func([], [IDL.Text], ['query'])\n  });\n};\n// @ts-ignore\nexport const init = ({IDL}) => {\n  return [];\n};\n", "export const idlFactory = ({IDL}) => {\n  const CommitBatch = IDL.Record({\n    batch_id: IDL.Nat,\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    chunk_ids: IDL.Vec(IDL.Nat)\n  });\n  const DeleteControllersArgs = IDL.Record({\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const Controller = IDL.Record({\n    updated_at: IDL.Nat64,\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    created_at: IDL.Nat64,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const DelDoc = IDL.Record({updated_at: IDL.Opt(IDL.Nat64)});\n  const StorageConfig = IDL.Record({\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))))\n  });\n  const Config = IDL.Record({storage: StorageConfig});\n  const Doc = IDL.Record({\n    updated_at: IDL.Nat64,\n    owner: IDL.Principal,\n    data: IDL.Vec(IDL.Nat8),\n    created_at: IDL.Nat64\n  });\n  const HttpRequest = IDL.Record({\n    url: IDL.Text,\n    method: IDL.Text,\n    body: IDL.Vec(IDL.Nat8),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))\n  });\n  const StreamingCallbackToken = IDL.Record({\n    token: IDL.Opt(IDL.Text),\n    sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    index: IDL.Nat64,\n    encoding_type: IDL.Text,\n    full_path: IDL.Text\n  });\n  const StreamingStrategy = IDL.Variant({\n    Callback: IDL.Record({\n      token: StreamingCallbackToken,\n      callback: IDL.Func([], [], [])\n    })\n  });\n  const HttpResponse = IDL.Record({\n    body: IDL.Vec(IDL.Nat8),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    streaming_strategy: IDL.Opt(StreamingStrategy),\n    status_code: IDL.Nat16\n  });\n  const StreamingCallbackHttpResponse = IDL.Record({\n    token: IDL.Opt(StreamingCallbackToken),\n    body: IDL.Vec(IDL.Nat8)\n  });\n  const InitAssetKey = IDL.Record({\n    token: IDL.Opt(IDL.Text),\n    collection: IDL.Text,\n    name: IDL.Text,\n    encoding_type: IDL.Opt(IDL.Text),\n    full_path: IDL.Text\n  });\n  const InitUploadResult = IDL.Record({batch_id: IDL.Nat});\n  const ListOrderField = IDL.Variant({\n    UpdatedAt: IDL.Null,\n    Keys: IDL.Null,\n    CreatedAt: IDL.Null\n  });\n  const ListOrder = IDL.Record({field: ListOrderField, desc: IDL.Bool});\n  const ListPaginate = IDL.Record({\n    start_after: IDL.Opt(IDL.Text),\n    limit: IDL.Opt(IDL.Nat64)\n  });\n  const ListParams = IDL.Record({\n    order: IDL.Opt(ListOrder),\n    matcher: IDL.Opt(IDL.Text),\n    paginate: IDL.Opt(ListPaginate)\n  });\n  const AssetKey = IDL.Record({\n    token: IDL.Opt(IDL.Text),\n    collection: IDL.Text,\n    owner: IDL.Principal,\n    name: IDL.Text,\n    full_path: IDL.Text\n  });\n  const AssetEncodingNoContent = IDL.Record({\n    modified: IDL.Nat64,\n    sha256: IDL.Vec(IDL.Nat8),\n    total_length: IDL.Nat\n  });\n  const AssetNoContent = IDL.Record({\n    key: AssetKey,\n    updated_at: IDL.Nat64,\n    encodings: IDL.Vec(IDL.Tuple(IDL.Text, AssetEncodingNoContent)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    created_at: IDL.Nat64\n  });\n  const ListResults = IDL.Record({\n    matches_length: IDL.Nat64,\n    length: IDL.Nat64,\n    items: IDL.Vec(IDL.Tuple(IDL.Text, AssetNoContent))\n  });\n  const CustomDomain = IDL.Record({\n    updated_at: IDL.Nat64,\n    created_at: IDL.Nat64,\n    bn_id: IDL.Opt(IDL.Text)\n  });\n  const ListResults_1 = IDL.Record({\n    matches_length: IDL.Nat64,\n    length: IDL.Nat64,\n    items: IDL.Vec(IDL.Tuple(IDL.Text, Doc))\n  });\n  const RulesType = IDL.Variant({Db: IDL.Null, Storage: IDL.Null});\n  const Permission = IDL.Variant({\n    Controllers: IDL.Null,\n    Private: IDL.Null,\n    Public: IDL.Null,\n    Managed: IDL.Null\n  });\n  const Rule = IDL.Record({\n    updated_at: IDL.Nat64,\n    max_size: IDL.Opt(IDL.Nat),\n    read: Permission,\n    created_at: IDL.Nat64,\n    write: Permission\n  });\n  const SetController = IDL.Record({\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const SetControllersArgs = IDL.Record({\n    controller: SetController,\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const SetDoc = IDL.Record({\n    updated_at: IDL.Opt(IDL.Nat64),\n    data: IDL.Vec(IDL.Nat8)\n  });\n  const SetRule = IDL.Record({\n    updated_at: IDL.Opt(IDL.Nat64),\n    max_size: IDL.Opt(IDL.Nat),\n    read: Permission,\n    write: Permission\n  });\n  const Chunk = IDL.Record({\n    content: IDL.Vec(IDL.Nat8),\n    batch_id: IDL.Nat\n  });\n  const UploadChunk = IDL.Record({chunk_id: IDL.Nat});\n  return IDL.Service({\n    commit_asset_upload: IDL.Func([CommitBatch], [], []),\n    del_asset: IDL.Func([IDL.Text, IDL.Text], [], []),\n    del_assets: IDL.Func([IDL.Opt(IDL.Text)], [], []),\n    del_controllers: IDL.Func(\n      [DeleteControllersArgs],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, Controller))],\n      []\n    ),\n    del_custom_domain: IDL.Func([IDL.Text], [], []),\n    del_doc: IDL.Func([IDL.Text, IDL.Text, DelDoc], [], []),\n    get_config: IDL.Func([], [Config], []),\n    get_doc: IDL.Func([IDL.Text, IDL.Text], [IDL.Opt(Doc)], ['query']),\n    http_request: IDL.Func([HttpRequest], [HttpResponse], ['query']),\n    http_request_streaming_callback: IDL.Func(\n      [StreamingCallbackToken],\n      [StreamingCallbackHttpResponse],\n      ['query']\n    ),\n    init_asset_upload: IDL.Func([InitAssetKey], [InitUploadResult], []),\n    list_assets: IDL.Func([IDL.Opt(IDL.Text), ListParams], [ListResults], ['query']),\n    list_controllers: IDL.Func([], [IDL.Vec(IDL.Principal)], ['query']),\n    list_custom_domains: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, CustomDomain))], ['query']),\n    list_docs: IDL.Func([IDL.Text, ListParams], [ListResults_1], ['query']),\n    list_rules: IDL.Func([RulesType], [IDL.Vec(IDL.Tuple(IDL.Text, Rule))], ['query']),\n    set_config: IDL.Func([Config], [], []),\n    set_controllers: IDL.Func(\n      [SetControllersArgs],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, Controller))],\n      []\n    ),\n    set_custom_domain: IDL.Func([IDL.Text, IDL.Opt(IDL.Text)], [], []),\n    set_doc: IDL.Func([IDL.Text, IDL.Text, SetDoc], [Doc], []),\n    set_rule: IDL.Func([RulesType, IDL.Text, SetRule], [], []),\n    upload_asset_chunk: IDL.Func([Chunk], [UploadChunk], []),\n    version: IDL.Func([], [IDL.Text], ['query'])\n  });\n};\nexport const init = ({IDL}) => {\n  return [];\n};\n", "/* eslint-disable */\n\n// @ts-nocheck\n\n// This file was automatically generated by @icp-sdk/bindgen@0.2.1.\n// You should NOT make any changes in this file as it will be overwritten.\n// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.\n\nexport const idlFactory = ({IDL}) => {\n  const Memory = IDL.Variant({Heap: IDL.Null, Stable: IDL.Null});\n  const InitStorageArgs = IDL.Record({system_memory: IDL.Opt(Memory)});\n  const InitSatelliteArgs = IDL.Record({\n    controllers: IDL.Vec(IDL.Principal),\n    storage: IDL.Opt(InitStorageArgs)\n  });\n  const OpenIdPrepareDelegationArgs = IDL.Record({\n    jwt: IDL.Text,\n    session_key: IDL.Vec(IDL.Nat8),\n    salt: IDL.Vec(IDL.Nat8)\n  });\n  const AuthenticationArgs = IDL.Variant({\n    OpenId: OpenIdPrepareDelegationArgs\n  });\n  const Doc = IDL.Record({\n    updated_at: IDL.Nat64,\n    owner: IDL.Principal,\n    data: IDL.Vec(IDL.Nat8),\n    description: IDL.Opt(IDL.Text),\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const PreparedDelegation = IDL.Record({\n    user_key: IDL.Vec(IDL.Nat8),\n    expiration: IDL.Nat64\n  });\n  const Authentication = IDL.Record({\n    doc: Doc,\n    delegation: PreparedDelegation\n  });\n  const JwtFindProviderError = IDL.Variant({\n    BadClaim: IDL.Text,\n    BadSig: IDL.Text,\n    NoMatchingProvider: IDL.Null\n  });\n  const JwtVerifyError = IDL.Variant({\n    WrongKeyType: IDL.Null,\n    MissingKid: IDL.Null,\n    BadClaim: IDL.Text,\n    BadSig: IDL.Text,\n    NoKeyForKid: IDL.Null\n  });\n  const GetOrRefreshJwksError = IDL.Variant({\n    InvalidConfig: IDL.Text,\n    MissingKid: IDL.Null,\n    BadClaim: IDL.Text,\n    KeyNotFoundCooldown: IDL.Null,\n    CertificateNotFound: IDL.Null,\n    BadSig: IDL.Text,\n    MissingLastAttempt: IDL.Text,\n    KeyNotFound: IDL.Null,\n    FetchFailed: IDL.Text\n  });\n  const PrepareDelegationError = IDL.Variant({\n    JwtFindProvider: JwtFindProviderError,\n    GetCachedJwks: IDL.Null,\n    JwtVerify: JwtVerifyError,\n    GetOrFetchJwks: GetOrRefreshJwksError,\n    DeriveSeedFailed: IDL.Text,\n    InvalidObservatoryId: IDL.Text\n  });\n  const AuthenticationError = IDL.Variant({\n    PrepareDelegation: PrepareDelegationError,\n    RegisterUser: IDL.Text\n  });\n  const AuthenticateResultResponse = IDL.Variant({\n    Ok: Authentication,\n    Err: AuthenticationError\n  });\n  const OpenIdPrepareAutomationArgs = IDL.Record({\n    jwt: IDL.Text,\n    salt: IDL.Vec(IDL.Nat8)\n  });\n  const AuthenticateAutomationArgs = IDL.Variant({\n    OpenId: OpenIdPrepareAutomationArgs\n  });\n  const AutomationScope = IDL.Variant({\n    Write: IDL.Null,\n    Submit: IDL.Null\n  });\n  const AutomationController = IDL.Record({\n    scope: AutomationScope,\n    expires_at: IDL.Nat64\n  });\n  const PrepareAutomationError = IDL.Variant({\n    JwtFindProvider: JwtFindProviderError,\n    InvalidController: IDL.Text,\n    GetCachedJwks: IDL.Null,\n    JwtVerify: JwtVerifyError,\n    GetOrFetchJwks: GetOrRefreshJwksError,\n    ControllerAlreadyExists: IDL.Null,\n    InvalidObservatoryId: IDL.Text,\n    TooManyControllers: IDL.Text\n  });\n  const AuthenticationAutomationError = IDL.Variant({\n    PrepareAutomation: PrepareAutomationError,\n    RegisterController: IDL.Text,\n    SaveWorkflowMetadata: IDL.Text,\n    SaveUniqueJtiToken: IDL.Text\n  });\n  const AuthenticateAutomationResultResponse = IDL.Variant({\n    Ok: IDL.Tuple(IDL.Principal, AutomationController),\n    Err: AuthenticationAutomationError\n  });\n  const AssetKey = IDL.Record({\n    token: IDL.Opt(IDL.Text),\n    collection: IDL.Text,\n    owner: IDL.Principal,\n    name: IDL.Text,\n    description: IDL.Opt(IDL.Text),\n    full_path: IDL.Text\n  });\n  const CertifyAssetsCursor = IDL.Variant({\n    Heap: IDL.Record({offset: IDL.Nat64}),\n    Stable: IDL.Record({key: IDL.Opt(AssetKey)})\n  });\n  const CertifyAssetsStrategy = IDL.Variant({\n    Append: IDL.Null,\n    Clear: IDL.Null,\n    AppendWithRouting: IDL.Null\n  });\n  const CertifyAssetsArgs = IDL.Record({\n    cursor: CertifyAssetsCursor,\n    strategy: CertifyAssetsStrategy,\n    chunk_size: IDL.Opt(IDL.Nat32)\n  });\n  const CertifyAssetsResult = IDL.Record({\n    next_cursor: IDL.Opt(CertifyAssetsCursor)\n  });\n  const CommitBatch = IDL.Record({\n    batch_id: IDL.Nat,\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    chunk_ids: IDL.Vec(IDL.Nat)\n  });\n  const CommitProposal = IDL.Record({\n    sha256: IDL.Vec(IDL.Nat8),\n    proposal_id: IDL.Nat\n  });\n  const ListOrderField = IDL.Variant({\n    UpdatedAt: IDL.Null,\n    Keys: IDL.Null,\n    CreatedAt: IDL.Null\n  });\n  const ListOrder = IDL.Record({field: ListOrderField, desc: IDL.Bool});\n  const TimestampMatcher = IDL.Variant({\n    Equal: IDL.Nat64,\n    Between: IDL.Tuple(IDL.Nat64, IDL.Nat64),\n    GreaterThan: IDL.Nat64,\n    LessThan: IDL.Nat64\n  });\n  const ListMatcher = IDL.Record({\n    key: IDL.Opt(IDL.Text),\n    updated_at: IDL.Opt(TimestampMatcher),\n    description: IDL.Opt(IDL.Text),\n    created_at: IDL.Opt(TimestampMatcher)\n  });\n  const ListPaginate = IDL.Record({\n    start_after: IDL.Opt(IDL.Text),\n    limit: IDL.Opt(IDL.Nat64)\n  });\n  const ListParams = IDL.Record({\n    order: IDL.Opt(ListOrder),\n    owner: IDL.Opt(IDL.Principal),\n    matcher: IDL.Opt(ListMatcher),\n    paginate: IDL.Opt(ListPaginate)\n  });\n  const DeleteControllersArgs = IDL.Record({\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const AccessKeyKind = IDL.Variant({\n    Emulator: IDL.Null,\n    Automation: IDL.Null\n  });\n  const AccessKeyScope = IDL.Variant({\n    Write: IDL.Null,\n    Admin: IDL.Null,\n    Submit: IDL.Null\n  });\n  const AccessKey = IDL.Record({\n    updated_at: IDL.Nat64,\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    kind: IDL.Opt(AccessKeyKind),\n    created_at: IDL.Nat64,\n    scope: AccessKeyScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const DelDoc = IDL.Record({version: IDL.Opt(IDL.Nat64)});\n  const CollectionType = IDL.Variant({Db: IDL.Null, Storage: IDL.Null});\n  const DelRule = IDL.Record({version: IDL.Opt(IDL.Nat64)});\n  const DeleteProposalAssets = IDL.Record({\n    proposal_ids: IDL.Vec(IDL.Nat)\n  });\n  const DepositCyclesArgs = IDL.Record({\n    cycles: IDL.Nat,\n    destination_id: IDL.Principal\n  });\n  const AssetEncodingNoContent = IDL.Record({\n    modified: IDL.Nat64,\n    sha256: IDL.Vec(IDL.Nat8),\n    total_length: IDL.Nat\n  });\n  const AssetNoContent = IDL.Record({\n    key: AssetKey,\n    updated_at: IDL.Nat64,\n    encodings: IDL.Vec(IDL.Tuple(IDL.Text, AssetEncodingNoContent)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const OpenIdDelegationProvider = IDL.Variant({\n    GitHub: IDL.Null,\n    Google: IDL.Null\n  });\n  const OpenIdAuthProviderDelegationConfig = IDL.Record({\n    targets: IDL.Opt(IDL.Vec(IDL.Principal)),\n    max_time_to_live: IDL.Opt(IDL.Nat64)\n  });\n  const OpenIdAuthProviderConfig = IDL.Record({\n    delegation: IDL.Opt(OpenIdAuthProviderDelegationConfig),\n    client_id: IDL.Text\n  });\n  const AuthenticationConfigOpenId = IDL.Record({\n    observatory_id: IDL.Opt(IDL.Principal),\n    providers: IDL.Vec(IDL.Tuple(OpenIdDelegationProvider, OpenIdAuthProviderConfig))\n  });\n  const AuthenticationConfigInternetIdentity = IDL.Record({\n    derivation_origin: IDL.Opt(IDL.Text),\n    external_alternative_origins: IDL.Opt(IDL.Vec(IDL.Text))\n  });\n  const AuthenticationRules = IDL.Record({\n    allowed_callers: IDL.Vec(IDL.Principal)\n  });\n  const AuthenticationConfig = IDL.Record({\n    updated_at: IDL.Opt(IDL.Nat64),\n    openid: IDL.Opt(AuthenticationConfigOpenId),\n    created_at: IDL.Opt(IDL.Nat64),\n    version: IDL.Opt(IDL.Nat64),\n    internet_identity: IDL.Opt(AuthenticationConfigInternetIdentity),\n    rules: IDL.Opt(AuthenticationRules)\n  });\n  const OpenIdAutomationProvider = IDL.Variant({GitHub: IDL.Null});\n  const OpenIdAutomationProviderControllerConfig = IDL.Record({\n    scope: IDL.Opt(AutomationScope),\n    max_time_to_live: IDL.Opt(IDL.Nat64)\n  });\n  const RepositoryKey = IDL.Record({owner: IDL.Text, name: IDL.Text});\n  const OpenIdAutomationRepositoryConfig = IDL.Record({\n    refs: IDL.Opt(IDL.Vec(IDL.Text))\n  });\n  const OpenIdAutomationProviderConfig = IDL.Record({\n    controller: IDL.Opt(OpenIdAutomationProviderControllerConfig),\n    repositories: IDL.Vec(IDL.Tuple(RepositoryKey, OpenIdAutomationRepositoryConfig))\n  });\n  const AutomationConfigOpenId = IDL.Record({\n    observatory_id: IDL.Opt(IDL.Principal),\n    providers: IDL.Vec(IDL.Tuple(OpenIdAutomationProvider, OpenIdAutomationProviderConfig))\n  });\n  const AutomationConfig = IDL.Record({\n    updated_at: IDL.Opt(IDL.Nat64),\n    openid: IDL.Opt(AutomationConfigOpenId),\n    created_at: IDL.Opt(IDL.Nat64),\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const ConfigMaxMemorySize = IDL.Record({\n    stable: IDL.Opt(IDL.Nat64),\n    heap: IDL.Opt(IDL.Nat64)\n  });\n  const DbConfig = IDL.Record({\n    updated_at: IDL.Opt(IDL.Nat64),\n    created_at: IDL.Opt(IDL.Nat64),\n    version: IDL.Opt(IDL.Nat64),\n    max_memory_size: IDL.Opt(ConfigMaxMemorySize)\n  });\n  const StorageConfigIFrame = IDL.Variant({\n    Deny: IDL.Null,\n    AllowAny: IDL.Null,\n    SameOrigin: IDL.Null\n  });\n  const StorageConfigRawAccess = IDL.Variant({\n    Deny: IDL.Null,\n    Allow: IDL.Null\n  });\n  const StorageConfigRedirect = IDL.Record({\n    status_code: IDL.Nat16,\n    location: IDL.Text\n  });\n  const StorageConfig = IDL.Record({\n    iframe: IDL.Opt(StorageConfigIFrame),\n    updated_at: IDL.Opt(IDL.Nat64),\n    rewrites: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)))),\n    created_at: IDL.Opt(IDL.Nat64),\n    version: IDL.Opt(IDL.Nat64),\n    max_memory_size: IDL.Opt(ConfigMaxMemorySize),\n    raw_access: IDL.Opt(StorageConfigRawAccess),\n    redirects: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, StorageConfigRedirect)))\n  });\n  const Config = IDL.Record({\n    db: IDL.Opt(DbConfig),\n    authentication: IDL.Opt(AuthenticationConfig),\n    storage: StorageConfig,\n    automation: IDL.Opt(AutomationConfig)\n  });\n  const OpenIdGetDelegationArgs = IDL.Record({\n    jwt: IDL.Text,\n    session_key: IDL.Vec(IDL.Nat8),\n    salt: IDL.Vec(IDL.Nat8),\n    expiration: IDL.Nat64\n  });\n  const GetDelegationArgs = IDL.Variant({OpenId: OpenIdGetDelegationArgs});\n  const Delegation = IDL.Record({\n    pubkey: IDL.Vec(IDL.Nat8),\n    targets: IDL.Opt(IDL.Vec(IDL.Principal)),\n    expiration: IDL.Nat64\n  });\n  const SignedDelegation = IDL.Record({\n    signature: IDL.Vec(IDL.Nat8),\n    delegation: Delegation\n  });\n  const GetDelegationError = IDL.Variant({\n    JwtFindProvider: JwtFindProviderError,\n    GetCachedJwks: IDL.Null,\n    NoSuchDelegation: IDL.Null,\n    JwtVerify: JwtVerifyError,\n    GetOrFetchJwks: GetOrRefreshJwksError,\n    DeriveSeedFailed: IDL.Text,\n    InvalidObservatoryId: IDL.Text\n  });\n  const GetDelegationResultResponse = IDL.Variant({\n    Ok: SignedDelegation,\n    Err: GetDelegationError\n  });\n  const ProposalStatus = IDL.Variant({\n    Initialized: IDL.Null,\n    Failed: IDL.Null,\n    Open: IDL.Null,\n    Rejected: IDL.Null,\n    Executed: IDL.Null,\n    Accepted: IDL.Null\n  });\n  const AssetsUpgradeOptions = IDL.Record({\n    clear_existing_assets: IDL.Opt(IDL.Bool)\n  });\n  const SegmentsDeploymentOptions = IDL.Record({\n    orbiter: IDL.Opt(IDL.Text),\n    mission_control_version: IDL.Opt(IDL.Text),\n    satellite_version: IDL.Opt(IDL.Text)\n  });\n  const ProposalType = IDL.Variant({\n    AssetsUpgrade: AssetsUpgradeOptions,\n    SegmentsDeployment: SegmentsDeploymentOptions\n  });\n  const Proposal = IDL.Record({\n    status: ProposalStatus,\n    updated_at: IDL.Nat64,\n    sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n    executed_at: IDL.Opt(IDL.Nat64),\n    owner: IDL.Principal,\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64),\n    proposal_type: ProposalType\n  });\n  const Permission = IDL.Variant({\n    Controllers: IDL.Null,\n    Private: IDL.Null,\n    Public: IDL.Null,\n    Managed: IDL.Null\n  });\n  const RateConfig = IDL.Record({\n    max_tokens: IDL.Nat64,\n    time_per_token_ns: IDL.Nat64\n  });\n  const Rule = IDL.Record({\n    max_capacity: IDL.Opt(IDL.Nat32),\n    memory: IDL.Opt(Memory),\n    updated_at: IDL.Nat64,\n    max_size: IDL.Opt(IDL.Nat),\n    read: Permission,\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64),\n    mutable_permissions: IDL.Opt(IDL.Bool),\n    rate_config: IDL.Opt(RateConfig),\n    write: Permission,\n    max_changes_per_user: IDL.Opt(IDL.Nat32)\n  });\n  const HttpRequest = IDL.Record({\n    url: IDL.Text,\n    method: IDL.Text,\n    body: IDL.Vec(IDL.Nat8),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    certificate_version: IDL.Opt(IDL.Nat16)\n  });\n  const StreamingCallbackToken = IDL.Record({\n    memory: Memory,\n    token: IDL.Opt(IDL.Text),\n    sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    index: IDL.Nat64,\n    encoding_type: IDL.Text,\n    full_path: IDL.Text\n  });\n  const StreamingStrategy = IDL.Variant({\n    Callback: IDL.Record({\n      token: StreamingCallbackToken,\n      callback: IDL.Func([], [], ['query'])\n    })\n  });\n  const HttpResponse = IDL.Record({\n    body: IDL.Vec(IDL.Nat8),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    streaming_strategy: IDL.Opt(StreamingStrategy),\n    status_code: IDL.Nat16\n  });\n  const StreamingCallbackHttpResponse = IDL.Record({\n    token: IDL.Opt(StreamingCallbackToken),\n    body: IDL.Vec(IDL.Nat8)\n  });\n  const InitAssetKey = IDL.Record({\n    token: IDL.Opt(IDL.Text),\n    collection: IDL.Text,\n    name: IDL.Text,\n    description: IDL.Opt(IDL.Text),\n    encoding_type: IDL.Opt(IDL.Text),\n    full_path: IDL.Text\n  });\n  const InitUploadResult = IDL.Record({batch_id: IDL.Nat});\n  const ListResults = IDL.Record({\n    matches_pages: IDL.Opt(IDL.Nat64),\n    matches_length: IDL.Nat64,\n    items_page: IDL.Opt(IDL.Nat64),\n    items: IDL.Vec(IDL.Tuple(IDL.Text, AssetNoContent)),\n    items_length: IDL.Nat64\n  });\n  const CustomDomain = IDL.Record({\n    updated_at: IDL.Nat64,\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64),\n    bn_id: IDL.Opt(IDL.Text)\n  });\n  const ListResults_1 = IDL.Record({\n    matches_pages: IDL.Opt(IDL.Nat64),\n    matches_length: IDL.Nat64,\n    items_page: IDL.Opt(IDL.Nat64),\n    items: IDL.Vec(IDL.Tuple(IDL.Text, Doc)),\n    items_length: IDL.Nat64\n  });\n  const ListProposalsOrder = IDL.Record({desc: IDL.Bool});\n  const ListProposalsPaginate = IDL.Record({\n    start_after: IDL.Opt(IDL.Nat),\n    limit: IDL.Opt(IDL.Nat)\n  });\n  const ListProposalsParams = IDL.Record({\n    order: IDL.Opt(ListProposalsOrder),\n    paginate: IDL.Opt(ListProposalsPaginate)\n  });\n  const ProposalKey = IDL.Record({proposal_id: IDL.Nat});\n  const ListProposalResults = IDL.Record({\n    matches_length: IDL.Nat64,\n    items: IDL.Vec(IDL.Tuple(ProposalKey, Proposal)),\n    items_length: IDL.Nat64\n  });\n  const ListRulesMatcher = IDL.Record({include_system: IDL.Bool});\n  const ListRulesParams = IDL.Record({matcher: IDL.Opt(ListRulesMatcher)});\n  const ListRulesResults = IDL.Record({\n    matches_length: IDL.Nat64,\n    items: IDL.Vec(IDL.Tuple(IDL.Text, Rule)),\n    items_length: IDL.Nat64\n  });\n  const MemorySize = IDL.Record({stable: IDL.Nat64, heap: IDL.Nat64});\n  const SetAuthenticationConfig = IDL.Record({\n    openid: IDL.Opt(AuthenticationConfigOpenId),\n    version: IDL.Opt(IDL.Nat64),\n    internet_identity: IDL.Opt(AuthenticationConfigInternetIdentity),\n    rules: IDL.Opt(AuthenticationRules)\n  });\n  const SetAutomationConfig = IDL.Record({\n    openid: IDL.Opt(AutomationConfigOpenId),\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const SetAccessKey = IDL.Record({\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    kind: IDL.Opt(AccessKeyKind),\n    scope: AccessKeyScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const SetControllersArgs = IDL.Record({\n    controller: SetAccessKey,\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const SetDbConfig = IDL.Record({\n    version: IDL.Opt(IDL.Nat64),\n    max_memory_size: IDL.Opt(ConfigMaxMemorySize)\n  });\n  const SetDoc = IDL.Record({\n    data: IDL.Vec(IDL.Nat8),\n    description: IDL.Opt(IDL.Text),\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const SetRule = IDL.Record({\n    max_capacity: IDL.Opt(IDL.Nat32),\n    memory: IDL.Opt(Memory),\n    max_size: IDL.Opt(IDL.Nat),\n    read: Permission,\n    version: IDL.Opt(IDL.Nat64),\n    mutable_permissions: IDL.Opt(IDL.Bool),\n    rate_config: IDL.Opt(RateConfig),\n    write: Permission,\n    max_changes_per_user: IDL.Opt(IDL.Nat32)\n  });\n  const SetStorageConfig = IDL.Record({\n    iframe: IDL.Opt(StorageConfigIFrame),\n    rewrites: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)))),\n    version: IDL.Opt(IDL.Nat64),\n    max_memory_size: IDL.Opt(ConfigMaxMemorySize),\n    raw_access: IDL.Opt(StorageConfigRawAccess),\n    redirects: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, StorageConfigRedirect)))\n  });\n  const SetStorageConfigOptions = IDL.Record({\n    skip_certification: IDL.Opt(IDL.Bool)\n  });\n  const SetStorageConfigWithOptions = IDL.Record({\n    config: SetStorageConfig,\n    options: SetStorageConfigOptions\n  });\n  const UploadChunk = IDL.Record({\n    content: IDL.Vec(IDL.Nat8),\n    batch_id: IDL.Nat,\n    order_id: IDL.Opt(IDL.Nat)\n  });\n  const UploadChunkResult = IDL.Record({chunk_id: IDL.Nat});\n\n  return IDL.Service({\n    authenticate: IDL.Func([AuthenticationArgs], [AuthenticateResultResponse], []),\n    authenticate_automation: IDL.Func(\n      [AuthenticateAutomationArgs],\n      [AuthenticateAutomationResultResponse],\n      []\n    ),\n    certify_assets_chunk: IDL.Func([CertifyAssetsArgs], [CertifyAssetsResult], []),\n    commit_asset_upload: IDL.Func([CommitBatch], [], []),\n    commit_proposal: IDL.Func([CommitProposal], [IDL.Null], []),\n    commit_proposal_asset_upload: IDL.Func([CommitBatch], [], []),\n    commit_proposal_many_assets_upload: IDL.Func([IDL.Vec(CommitBatch)], [], []),\n    count_assets: IDL.Func([IDL.Text, ListParams], [IDL.Nat64], ['query']),\n    count_collection_assets: IDL.Func([IDL.Text], [IDL.Nat64], ['query']),\n    count_collection_docs: IDL.Func([IDL.Text], [IDL.Nat64], ['query']),\n    count_docs: IDL.Func([IDL.Text, ListParams], [IDL.Nat64], ['query']),\n    count_proposals: IDL.Func([], [IDL.Nat64], ['query']),\n    del_asset: IDL.Func([IDL.Text, IDL.Text], [], []),\n    del_assets: IDL.Func([IDL.Text], [], []),\n    del_controller_self: IDL.Func([], [], []),\n    del_controllers: IDL.Func(\n      [DeleteControllersArgs],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, AccessKey))],\n      []\n    ),\n    del_custom_domain: IDL.Func([IDL.Text], [], []),\n    del_doc: IDL.Func([IDL.Text, IDL.Text, DelDoc], [], []),\n    del_docs: IDL.Func([IDL.Text], [], []),\n    del_filtered_assets: IDL.Func([IDL.Text, ListParams], [], []),\n    del_filtered_docs: IDL.Func([IDL.Text, ListParams], [], []),\n    del_many_assets: IDL.Func([IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))], [], []),\n    del_many_docs: IDL.Func([IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text, DelDoc))], [], []),\n    del_rule: IDL.Func([CollectionType, IDL.Text, DelRule], [], []),\n    delete_proposal_assets: IDL.Func([DeleteProposalAssets], [], []),\n    deposit_cycles: IDL.Func([DepositCyclesArgs], [], []),\n    get_asset: IDL.Func([IDL.Text, IDL.Text], [IDL.Opt(AssetNoContent)], ['query']),\n    get_auth_config: IDL.Func([], [IDL.Opt(AuthenticationConfig)], ['query']),\n    get_automation_config: IDL.Func([], [IDL.Opt(AutomationConfig)], ['query']),\n    get_config: IDL.Func([], [Config], []),\n    get_db_config: IDL.Func([], [IDL.Opt(DbConfig)], ['query']),\n    get_delegation: IDL.Func([GetDelegationArgs], [GetDelegationResultResponse], ['query']),\n    get_doc: IDL.Func([IDL.Text, IDL.Text], [IDL.Opt(Doc)], ['query']),\n    get_many_assets: IDL.Func(\n      [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n      [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Opt(AssetNoContent)))],\n      ['query']\n    ),\n    get_many_docs: IDL.Func(\n      [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n      [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Opt(Doc)))],\n      ['query']\n    ),\n    get_proposal: IDL.Func([IDL.Nat], [IDL.Opt(Proposal)], ['query']),\n    get_rule: IDL.Func([CollectionType, IDL.Text], [IDL.Opt(Rule)], ['query']),\n    get_storage_config: IDL.Func([], [StorageConfig], ['query']),\n    http_request: IDL.Func([HttpRequest], [HttpResponse], ['query']),\n    http_request_streaming_callback: IDL.Func(\n      [StreamingCallbackToken],\n      [StreamingCallbackHttpResponse],\n      ['query']\n    ),\n    init_asset_upload: IDL.Func([InitAssetKey], [InitUploadResult], []),\n    init_proposal: IDL.Func([ProposalType], [IDL.Nat, Proposal], []),\n    init_proposal_asset_upload: IDL.Func([InitAssetKey, IDL.Nat], [InitUploadResult], []),\n    init_proposal_many_assets_upload: IDL.Func(\n      [IDL.Vec(InitAssetKey), IDL.Nat],\n      [IDL.Vec(IDL.Tuple(IDL.Text, InitUploadResult))],\n      []\n    ),\n    list_assets: IDL.Func([IDL.Text, ListParams], [ListResults], ['query']),\n    list_controllers: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Principal, AccessKey))], ['query']),\n    list_custom_domains: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, CustomDomain))], ['query']),\n    list_docs: IDL.Func([IDL.Text, ListParams], [ListResults_1], ['query']),\n    list_proposals: IDL.Func([ListProposalsParams], [ListProposalResults], ['query']),\n    list_rules: IDL.Func([CollectionType, ListRulesParams], [ListRulesResults], ['query']),\n    memory_size: IDL.Func([], [MemorySize], ['query']),\n    reject_proposal: IDL.Func([CommitProposal], [IDL.Null], []),\n    set_asset_token: IDL.Func([IDL.Text, IDL.Text, IDL.Opt(IDL.Text)], [], []),\n    set_auth_config: IDL.Func([SetAuthenticationConfig], [AuthenticationConfig], []),\n    set_automation_config: IDL.Func([SetAutomationConfig], [AutomationConfig], []),\n    set_controllers: IDL.Func(\n      [SetControllersArgs],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, AccessKey))],\n      []\n    ),\n    set_custom_domain: IDL.Func([IDL.Text, IDL.Opt(IDL.Text)], [], []),\n    set_db_config: IDL.Func([SetDbConfig], [DbConfig], []),\n    set_doc: IDL.Func([IDL.Text, IDL.Text, SetDoc], [Doc], []),\n    set_many_docs: IDL.Func(\n      [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text, SetDoc))],\n      [IDL.Vec(IDL.Tuple(IDL.Text, Doc))],\n      []\n    ),\n    set_rule: IDL.Func([CollectionType, IDL.Text, SetRule], [Rule], []),\n    set_storage_config: IDL.Func([SetStorageConfig], [StorageConfig], []),\n    set_storage_config_with_options: IDL.Func([SetStorageConfigWithOptions], [StorageConfig], []),\n    submit_proposal: IDL.Func([IDL.Nat], [IDL.Nat, Proposal], []),\n    switch_storage_system_memory: IDL.Func([], [], []),\n    upload_asset_chunk: IDL.Func([UploadChunk], [UploadChunkResult], []),\n    upload_proposal_asset_chunk: IDL.Func([UploadChunk], [UploadChunkResult], [])\n  });\n};\n\nexport const init = ({IDL}) => {\n  const Memory = IDL.Variant({Heap: IDL.Null, Stable: IDL.Null});\n  const InitStorageArgs = IDL.Record({system_memory: IDL.Opt(Memory)});\n  const InitSatelliteArgs = IDL.Record({\n    controllers: IDL.Vec(IDL.Principal),\n    storage: IDL.Opt(InitStorageArgs)\n  });\n\n  return [InitSatelliteArgs];\n};\n", "/* eslint-disable */\n\n// @ts-nocheck\n\n// This file was automatically generated by @icp-sdk/bindgen@0.2.1.\n// You should NOT make any changes in this file as it will be overwritten.\n// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.\n\nexport const idlFactory = ({IDL}) => {\n  const Memory = IDL.Variant({Heap: IDL.Null, Stable: IDL.Null});\n  const InitStorageArgs = IDL.Record({system_memory: IDL.Opt(Memory)});\n  const InitSatelliteArgs = IDL.Record({\n    controllers: IDL.Vec(IDL.Principal),\n    storage: IDL.Opt(InitStorageArgs)\n  });\n  const OpenIdPrepareDelegationArgs = IDL.Record({\n    jwt: IDL.Text,\n    session_key: IDL.Vec(IDL.Nat8),\n    salt: IDL.Vec(IDL.Nat8)\n  });\n  const AuthenticationArgs = IDL.Variant({\n    OpenId: OpenIdPrepareDelegationArgs\n  });\n  const Doc = IDL.Record({\n    updated_at: IDL.Nat64,\n    owner: IDL.Principal,\n    data: IDL.Vec(IDL.Nat8),\n    description: IDL.Opt(IDL.Text),\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const PreparedDelegation = IDL.Record({\n    user_key: IDL.Vec(IDL.Nat8),\n    expiration: IDL.Nat64\n  });\n  const Authentication = IDL.Record({\n    doc: Doc,\n    delegation: PreparedDelegation\n  });\n  const JwtFindProviderError = IDL.Variant({\n    BadClaim: IDL.Text,\n    BadSig: IDL.Text,\n    NoMatchingProvider: IDL.Null\n  });\n  const JwtVerifyError = IDL.Variant({\n    WrongKeyType: IDL.Null,\n    MissingKid: IDL.Null,\n    BadClaim: IDL.Text,\n    BadSig: IDL.Text,\n    NoKeyForKid: IDL.Null\n  });\n  const GetOrRefreshJwksError = IDL.Variant({\n    InvalidConfig: IDL.Text,\n    MissingKid: IDL.Null,\n    BadClaim: IDL.Text,\n    KeyNotFoundCooldown: IDL.Null,\n    CertificateNotFound: IDL.Null,\n    BadSig: IDL.Text,\n    MissingLastAttempt: IDL.Text,\n    KeyNotFound: IDL.Null,\n    FetchFailed: IDL.Text\n  });\n  const PrepareDelegationError = IDL.Variant({\n    JwtFindProvider: JwtFindProviderError,\n    GetCachedJwks: IDL.Null,\n    JwtVerify: JwtVerifyError,\n    GetOrFetchJwks: GetOrRefreshJwksError,\n    DeriveSeedFailed: IDL.Text,\n    InvalidObservatoryId: IDL.Text\n  });\n  const AuthenticationError = IDL.Variant({\n    PrepareDelegation: PrepareDelegationError,\n    RegisterUser: IDL.Text\n  });\n  const AuthenticateResultResponse = IDL.Variant({\n    Ok: Authentication,\n    Err: AuthenticationError\n  });\n  const OpenIdPrepareAutomationArgs = IDL.Record({\n    jwt: IDL.Text,\n    salt: IDL.Vec(IDL.Nat8)\n  });\n  const AuthenticateAutomationArgs = IDL.Variant({\n    OpenId: OpenIdPrepareAutomationArgs\n  });\n  const AutomationScope = IDL.Variant({\n    Write: IDL.Null,\n    Submit: IDL.Null\n  });\n  const AutomationController = IDL.Record({\n    scope: AutomationScope,\n    expires_at: IDL.Nat64\n  });\n  const PrepareAutomationError = IDL.Variant({\n    JwtFindProvider: JwtFindProviderError,\n    InvalidController: IDL.Text,\n    GetCachedJwks: IDL.Null,\n    JwtVerify: JwtVerifyError,\n    GetOrFetchJwks: GetOrRefreshJwksError,\n    ControllerAlreadyExists: IDL.Null,\n    InvalidObservatoryId: IDL.Text,\n    TooManyControllers: IDL.Text\n  });\n  const AuthenticationAutomationError = IDL.Variant({\n    PrepareAutomation: PrepareAutomationError,\n    RegisterController: IDL.Text,\n    SaveWorkflowMetadata: IDL.Text,\n    SaveUniqueJtiToken: IDL.Text\n  });\n  const AuthenticateAutomationResultResponse = IDL.Variant({\n    Ok: IDL.Tuple(IDL.Principal, AutomationController),\n    Err: AuthenticationAutomationError\n  });\n  const AssetKey = IDL.Record({\n    token: IDL.Opt(IDL.Text),\n    collection: IDL.Text,\n    owner: IDL.Principal,\n    name: IDL.Text,\n    description: IDL.Opt(IDL.Text),\n    full_path: IDL.Text\n  });\n  const CertifyAssetsCursor = IDL.Variant({\n    Heap: IDL.Record({offset: IDL.Nat64}),\n    Stable: IDL.Record({key: IDL.Opt(AssetKey)})\n  });\n  const CertifyAssetsStrategy = IDL.Variant({\n    Append: IDL.Null,\n    Clear: IDL.Null,\n    AppendWithRouting: IDL.Null\n  });\n  const CertifyAssetsArgs = IDL.Record({\n    cursor: CertifyAssetsCursor,\n    strategy: CertifyAssetsStrategy,\n    chunk_size: IDL.Opt(IDL.Nat32)\n  });\n  const CertifyAssetsResult = IDL.Record({\n    next_cursor: IDL.Opt(CertifyAssetsCursor)\n  });\n  const CommitBatch = IDL.Record({\n    batch_id: IDL.Nat,\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    chunk_ids: IDL.Vec(IDL.Nat)\n  });\n  const CommitProposal = IDL.Record({\n    sha256: IDL.Vec(IDL.Nat8),\n    proposal_id: IDL.Nat\n  });\n  const ListOrderField = IDL.Variant({\n    UpdatedAt: IDL.Null,\n    Keys: IDL.Null,\n    CreatedAt: IDL.Null\n  });\n  const ListOrder = IDL.Record({field: ListOrderField, desc: IDL.Bool});\n  const TimestampMatcher = IDL.Variant({\n    Equal: IDL.Nat64,\n    Between: IDL.Tuple(IDL.Nat64, IDL.Nat64),\n    GreaterThan: IDL.Nat64,\n    LessThan: IDL.Nat64\n  });\n  const ListMatcher = IDL.Record({\n    key: IDL.Opt(IDL.Text),\n    updated_at: IDL.Opt(TimestampMatcher),\n    description: IDL.Opt(IDL.Text),\n    created_at: IDL.Opt(TimestampMatcher)\n  });\n  const ListPaginate = IDL.Record({\n    start_after: IDL.Opt(IDL.Text),\n    limit: IDL.Opt(IDL.Nat64)\n  });\n  const ListParams = IDL.Record({\n    order: IDL.Opt(ListOrder),\n    owner: IDL.Opt(IDL.Principal),\n    matcher: IDL.Opt(ListMatcher),\n    paginate: IDL.Opt(ListPaginate)\n  });\n  const DeleteControllersArgs = IDL.Record({\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const AccessKeyKind = IDL.Variant({\n    Emulator: IDL.Null,\n    Automation: IDL.Null\n  });\n  const AccessKeyScope = IDL.Variant({\n    Write: IDL.Null,\n    Admin: IDL.Null,\n    Submit: IDL.Null\n  });\n  const AccessKey = IDL.Record({\n    updated_at: IDL.Nat64,\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    kind: IDL.Opt(AccessKeyKind),\n    created_at: IDL.Nat64,\n    scope: AccessKeyScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const DelDoc = IDL.Record({version: IDL.Opt(IDL.Nat64)});\n  const CollectionType = IDL.Variant({Db: IDL.Null, Storage: IDL.Null});\n  const DelRule = IDL.Record({version: IDL.Opt(IDL.Nat64)});\n  const DeleteProposalAssets = IDL.Record({\n    proposal_ids: IDL.Vec(IDL.Nat)\n  });\n  const DepositCyclesArgs = IDL.Record({\n    cycles: IDL.Nat,\n    destination_id: IDL.Principal\n  });\n  const AssetEncodingNoContent = IDL.Record({\n    modified: IDL.Nat64,\n    sha256: IDL.Vec(IDL.Nat8),\n    total_length: IDL.Nat\n  });\n  const AssetNoContent = IDL.Record({\n    key: AssetKey,\n    updated_at: IDL.Nat64,\n    encodings: IDL.Vec(IDL.Tuple(IDL.Text, AssetEncodingNoContent)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const OpenIdDelegationProvider = IDL.Variant({\n    GitHub: IDL.Null,\n    Google: IDL.Null\n  });\n  const OpenIdAuthProviderDelegationConfig = IDL.Record({\n    targets: IDL.Opt(IDL.Vec(IDL.Principal)),\n    max_time_to_live: IDL.Opt(IDL.Nat64)\n  });\n  const OpenIdAuthProviderConfig = IDL.Record({\n    delegation: IDL.Opt(OpenIdAuthProviderDelegationConfig),\n    client_id: IDL.Text\n  });\n  const AuthenticationConfigOpenId = IDL.Record({\n    observatory_id: IDL.Opt(IDL.Principal),\n    providers: IDL.Vec(IDL.Tuple(OpenIdDelegationProvider, OpenIdAuthProviderConfig))\n  });\n  const AuthenticationConfigInternetIdentity = IDL.Record({\n    derivation_origin: IDL.Opt(IDL.Text),\n    external_alternative_origins: IDL.Opt(IDL.Vec(IDL.Text))\n  });\n  const AuthenticationRules = IDL.Record({\n    allowed_callers: IDL.Vec(IDL.Principal)\n  });\n  const AuthenticationConfig = IDL.Record({\n    updated_at: IDL.Opt(IDL.Nat64),\n    openid: IDL.Opt(AuthenticationConfigOpenId),\n    created_at: IDL.Opt(IDL.Nat64),\n    version: IDL.Opt(IDL.Nat64),\n    internet_identity: IDL.Opt(AuthenticationConfigInternetIdentity),\n    rules: IDL.Opt(AuthenticationRules)\n  });\n  const OpenIdAutomationProvider = IDL.Variant({GitHub: IDL.Null});\n  const OpenIdAutomationProviderControllerConfig = IDL.Record({\n    scope: IDL.Opt(AutomationScope),\n    max_time_to_live: IDL.Opt(IDL.Nat64)\n  });\n  const RepositoryKey = IDL.Record({owner: IDL.Text, name: IDL.Text});\n  const OpenIdAutomationRepositoryConfig = IDL.Record({\n    refs: IDL.Opt(IDL.Vec(IDL.Text))\n  });\n  const OpenIdAutomationProviderConfig = IDL.Record({\n    controller: IDL.Opt(OpenIdAutomationProviderControllerConfig),\n    repositories: IDL.Vec(IDL.Tuple(RepositoryKey, OpenIdAutomationRepositoryConfig))\n  });\n  const AutomationConfigOpenId = IDL.Record({\n    observatory_id: IDL.Opt(IDL.Principal),\n    providers: IDL.Vec(IDL.Tuple(OpenIdAutomationProvider, OpenIdAutomationProviderConfig))\n  });\n  const AutomationConfig = IDL.Record({\n    updated_at: IDL.Opt(IDL.Nat64),\n    openid: IDL.Opt(AutomationConfigOpenId),\n    created_at: IDL.Opt(IDL.Nat64),\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const ConfigMaxMemorySize = IDL.Record({\n    stable: IDL.Opt(IDL.Nat64),\n    heap: IDL.Opt(IDL.Nat64)\n  });\n  const DbConfig = IDL.Record({\n    updated_at: IDL.Opt(IDL.Nat64),\n    created_at: IDL.Opt(IDL.Nat64),\n    version: IDL.Opt(IDL.Nat64),\n    max_memory_size: IDL.Opt(ConfigMaxMemorySize)\n  });\n  const StorageConfigIFrame = IDL.Variant({\n    Deny: IDL.Null,\n    AllowAny: IDL.Null,\n    SameOrigin: IDL.Null\n  });\n  const StorageConfigRawAccess = IDL.Variant({\n    Deny: IDL.Null,\n    Allow: IDL.Null\n  });\n  const StorageConfigRedirect = IDL.Record({\n    status_code: IDL.Nat16,\n    location: IDL.Text\n  });\n  const StorageConfig = IDL.Record({\n    iframe: IDL.Opt(StorageConfigIFrame),\n    updated_at: IDL.Opt(IDL.Nat64),\n    rewrites: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)))),\n    created_at: IDL.Opt(IDL.Nat64),\n    version: IDL.Opt(IDL.Nat64),\n    max_memory_size: IDL.Opt(ConfigMaxMemorySize),\n    raw_access: IDL.Opt(StorageConfigRawAccess),\n    redirects: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, StorageConfigRedirect)))\n  });\n  const Config = IDL.Record({\n    db: IDL.Opt(DbConfig),\n    authentication: IDL.Opt(AuthenticationConfig),\n    storage: StorageConfig,\n    automation: IDL.Opt(AutomationConfig)\n  });\n  const OpenIdGetDelegationArgs = IDL.Record({\n    jwt: IDL.Text,\n    session_key: IDL.Vec(IDL.Nat8),\n    salt: IDL.Vec(IDL.Nat8),\n    expiration: IDL.Nat64\n  });\n  const GetDelegationArgs = IDL.Variant({OpenId: OpenIdGetDelegationArgs});\n  const Delegation = IDL.Record({\n    pubkey: IDL.Vec(IDL.Nat8),\n    targets: IDL.Opt(IDL.Vec(IDL.Principal)),\n    expiration: IDL.Nat64\n  });\n  const SignedDelegation = IDL.Record({\n    signature: IDL.Vec(IDL.Nat8),\n    delegation: Delegation\n  });\n  const GetDelegationError = IDL.Variant({\n    JwtFindProvider: JwtFindProviderError,\n    GetCachedJwks: IDL.Null,\n    NoSuchDelegation: IDL.Null,\n    JwtVerify: JwtVerifyError,\n    GetOrFetchJwks: GetOrRefreshJwksError,\n    DeriveSeedFailed: IDL.Text,\n    InvalidObservatoryId: IDL.Text\n  });\n  const GetDelegationResultResponse = IDL.Variant({\n    Ok: SignedDelegation,\n    Err: GetDelegationError\n  });\n  const ProposalStatus = IDL.Variant({\n    Initialized: IDL.Null,\n    Failed: IDL.Null,\n    Open: IDL.Null,\n    Rejected: IDL.Null,\n    Executed: IDL.Null,\n    Accepted: IDL.Null\n  });\n  const AssetsUpgradeOptions = IDL.Record({\n    clear_existing_assets: IDL.Opt(IDL.Bool)\n  });\n  const SegmentsDeploymentOptions = IDL.Record({\n    orbiter: IDL.Opt(IDL.Text),\n    mission_control_version: IDL.Opt(IDL.Text),\n    satellite_version: IDL.Opt(IDL.Text)\n  });\n  const ProposalType = IDL.Variant({\n    AssetsUpgrade: AssetsUpgradeOptions,\n    SegmentsDeployment: SegmentsDeploymentOptions\n  });\n  const Proposal = IDL.Record({\n    status: ProposalStatus,\n    updated_at: IDL.Nat64,\n    sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n    executed_at: IDL.Opt(IDL.Nat64),\n    owner: IDL.Principal,\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64),\n    proposal_type: ProposalType\n  });\n  const Permission = IDL.Variant({\n    Controllers: IDL.Null,\n    Private: IDL.Null,\n    Public: IDL.Null,\n    Managed: IDL.Null\n  });\n  const RateConfig = IDL.Record({\n    max_tokens: IDL.Nat64,\n    time_per_token_ns: IDL.Nat64\n  });\n  const Rule = IDL.Record({\n    max_capacity: IDL.Opt(IDL.Nat32),\n    memory: IDL.Opt(Memory),\n    updated_at: IDL.Nat64,\n    max_size: IDL.Opt(IDL.Nat),\n    read: Permission,\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64),\n    mutable_permissions: IDL.Opt(IDL.Bool),\n    rate_config: IDL.Opt(RateConfig),\n    write: Permission,\n    max_changes_per_user: IDL.Opt(IDL.Nat32)\n  });\n  const HttpRequest = IDL.Record({\n    url: IDL.Text,\n    method: IDL.Text,\n    body: IDL.Vec(IDL.Nat8),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    certificate_version: IDL.Opt(IDL.Nat16)\n  });\n  const StreamingCallbackToken = IDL.Record({\n    memory: Memory,\n    token: IDL.Opt(IDL.Text),\n    sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    index: IDL.Nat64,\n    encoding_type: IDL.Text,\n    full_path: IDL.Text\n  });\n  const StreamingStrategy = IDL.Variant({\n    Callback: IDL.Record({\n      token: StreamingCallbackToken,\n      callback: IDL.Func([], [], [])\n    })\n  });\n  const HttpResponse = IDL.Record({\n    body: IDL.Vec(IDL.Nat8),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    streaming_strategy: IDL.Opt(StreamingStrategy),\n    status_code: IDL.Nat16\n  });\n  const StreamingCallbackHttpResponse = IDL.Record({\n    token: IDL.Opt(StreamingCallbackToken),\n    body: IDL.Vec(IDL.Nat8)\n  });\n  const InitAssetKey = IDL.Record({\n    token: IDL.Opt(IDL.Text),\n    collection: IDL.Text,\n    name: IDL.Text,\n    description: IDL.Opt(IDL.Text),\n    encoding_type: IDL.Opt(IDL.Text),\n    full_path: IDL.Text\n  });\n  const InitUploadResult = IDL.Record({batch_id: IDL.Nat});\n  const ListResults = IDL.Record({\n    matches_pages: IDL.Opt(IDL.Nat64),\n    matches_length: IDL.Nat64,\n    items_page: IDL.Opt(IDL.Nat64),\n    items: IDL.Vec(IDL.Tuple(IDL.Text, AssetNoContent)),\n    items_length: IDL.Nat64\n  });\n  const CustomDomain = IDL.Record({\n    updated_at: IDL.Nat64,\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64),\n    bn_id: IDL.Opt(IDL.Text)\n  });\n  const ListResults_1 = IDL.Record({\n    matches_pages: IDL.Opt(IDL.Nat64),\n    matches_length: IDL.Nat64,\n    items_page: IDL.Opt(IDL.Nat64),\n    items: IDL.Vec(IDL.Tuple(IDL.Text, Doc)),\n    items_length: IDL.Nat64\n  });\n  const ListProposalsOrder = IDL.Record({desc: IDL.Bool});\n  const ListProposalsPaginate = IDL.Record({\n    start_after: IDL.Opt(IDL.Nat),\n    limit: IDL.Opt(IDL.Nat)\n  });\n  const ListProposalsParams = IDL.Record({\n    order: IDL.Opt(ListProposalsOrder),\n    paginate: IDL.Opt(ListProposalsPaginate)\n  });\n  const ProposalKey = IDL.Record({proposal_id: IDL.Nat});\n  const ListProposalResults = IDL.Record({\n    matches_length: IDL.Nat64,\n    items: IDL.Vec(IDL.Tuple(ProposalKey, Proposal)),\n    items_length: IDL.Nat64\n  });\n  const ListRulesMatcher = IDL.Record({include_system: IDL.Bool});\n  const ListRulesParams = IDL.Record({matcher: IDL.Opt(ListRulesMatcher)});\n  const ListRulesResults = IDL.Record({\n    matches_length: IDL.Nat64,\n    items: IDL.Vec(IDL.Tuple(IDL.Text, Rule)),\n    items_length: IDL.Nat64\n  });\n  const MemorySize = IDL.Record({stable: IDL.Nat64, heap: IDL.Nat64});\n  const SetAuthenticationConfig = IDL.Record({\n    openid: IDL.Opt(AuthenticationConfigOpenId),\n    version: IDL.Opt(IDL.Nat64),\n    internet_identity: IDL.Opt(AuthenticationConfigInternetIdentity),\n    rules: IDL.Opt(AuthenticationRules)\n  });\n  const SetAutomationConfig = IDL.Record({\n    openid: IDL.Opt(AutomationConfigOpenId),\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const SetAccessKey = IDL.Record({\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    kind: IDL.Opt(AccessKeyKind),\n    scope: AccessKeyScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const SetControllersArgs = IDL.Record({\n    controller: SetAccessKey,\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const SetDbConfig = IDL.Record({\n    version: IDL.Opt(IDL.Nat64),\n    max_memory_size: IDL.Opt(ConfigMaxMemorySize)\n  });\n  const SetDoc = IDL.Record({\n    data: IDL.Vec(IDL.Nat8),\n    description: IDL.Opt(IDL.Text),\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const SetRule = IDL.Record({\n    max_capacity: IDL.Opt(IDL.Nat32),\n    memory: IDL.Opt(Memory),\n    max_size: IDL.Opt(IDL.Nat),\n    read: Permission,\n    version: IDL.Opt(IDL.Nat64),\n    mutable_permissions: IDL.Opt(IDL.Bool),\n    rate_config: IDL.Opt(RateConfig),\n    write: Permission,\n    max_changes_per_user: IDL.Opt(IDL.Nat32)\n  });\n  const SetStorageConfig = IDL.Record({\n    iframe: IDL.Opt(StorageConfigIFrame),\n    rewrites: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)))),\n    version: IDL.Opt(IDL.Nat64),\n    max_memory_size: IDL.Opt(ConfigMaxMemorySize),\n    raw_access: IDL.Opt(StorageConfigRawAccess),\n    redirects: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, StorageConfigRedirect)))\n  });\n  const SetStorageConfigOptions = IDL.Record({\n    skip_certification: IDL.Opt(IDL.Bool)\n  });\n  const SetStorageConfigWithOptions = IDL.Record({\n    config: SetStorageConfig,\n    options: SetStorageConfigOptions\n  });\n  const UploadChunk = IDL.Record({\n    content: IDL.Vec(IDL.Nat8),\n    batch_id: IDL.Nat,\n    order_id: IDL.Opt(IDL.Nat)\n  });\n  const UploadChunkResult = IDL.Record({chunk_id: IDL.Nat});\n\n  return IDL.Service({\n    authenticate: IDL.Func([AuthenticationArgs], [AuthenticateResultResponse], []),\n    authenticate_automation: IDL.Func(\n      [AuthenticateAutomationArgs],\n      [AuthenticateAutomationResultResponse],\n      []\n    ),\n    certify_assets_chunk: IDL.Func([CertifyAssetsArgs], [CertifyAssetsResult], []),\n    commit_asset_upload: IDL.Func([CommitBatch], [], []),\n    commit_proposal: IDL.Func([CommitProposal], [IDL.Null], []),\n    commit_proposal_asset_upload: IDL.Func([CommitBatch], [], []),\n    commit_proposal_many_assets_upload: IDL.Func([IDL.Vec(CommitBatch)], [], []),\n    count_assets: IDL.Func([IDL.Text, ListParams], [IDL.Nat64], []),\n    count_collection_assets: IDL.Func([IDL.Text], [IDL.Nat64], []),\n    count_collection_docs: IDL.Func([IDL.Text], [IDL.Nat64], []),\n    count_docs: IDL.Func([IDL.Text, ListParams], [IDL.Nat64], []),\n    count_proposals: IDL.Func([], [IDL.Nat64], []),\n    del_asset: IDL.Func([IDL.Text, IDL.Text], [], []),\n    del_assets: IDL.Func([IDL.Text], [], []),\n    del_controller_self: IDL.Func([], [], []),\n    del_controllers: IDL.Func(\n      [DeleteControllersArgs],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, AccessKey))],\n      []\n    ),\n    del_custom_domain: IDL.Func([IDL.Text], [], []),\n    del_doc: IDL.Func([IDL.Text, IDL.Text, DelDoc], [], []),\n    del_docs: IDL.Func([IDL.Text], [], []),\n    del_filtered_assets: IDL.Func([IDL.Text, ListParams], [], []),\n    del_filtered_docs: IDL.Func([IDL.Text, ListParams], [], []),\n    del_many_assets: IDL.Func([IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))], [], []),\n    del_many_docs: IDL.Func([IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text, DelDoc))], [], []),\n    del_rule: IDL.Func([CollectionType, IDL.Text, DelRule], [], []),\n    delete_proposal_assets: IDL.Func([DeleteProposalAssets], [], []),\n    deposit_cycles: IDL.Func([DepositCyclesArgs], [], []),\n    get_asset: IDL.Func([IDL.Text, IDL.Text], [IDL.Opt(AssetNoContent)], []),\n    get_auth_config: IDL.Func([], [IDL.Opt(AuthenticationConfig)], []),\n    get_automation_config: IDL.Func([], [IDL.Opt(AutomationConfig)], []),\n    get_config: IDL.Func([], [Config], []),\n    get_db_config: IDL.Func([], [IDL.Opt(DbConfig)], []),\n    get_delegation: IDL.Func([GetDelegationArgs], [GetDelegationResultResponse], []),\n    get_doc: IDL.Func([IDL.Text, IDL.Text], [IDL.Opt(Doc)], []),\n    get_many_assets: IDL.Func(\n      [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n      [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Opt(AssetNoContent)))],\n      []\n    ),\n    get_many_docs: IDL.Func(\n      [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n      [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Opt(Doc)))],\n      []\n    ),\n    get_proposal: IDL.Func([IDL.Nat], [IDL.Opt(Proposal)], []),\n    get_rule: IDL.Func([CollectionType, IDL.Text], [IDL.Opt(Rule)], []),\n    get_storage_config: IDL.Func([], [StorageConfig], []),\n    http_request: IDL.Func([HttpRequest], [HttpResponse], []),\n    http_request_streaming_callback: IDL.Func(\n      [StreamingCallbackToken],\n      [StreamingCallbackHttpResponse],\n      []\n    ),\n    init_asset_upload: IDL.Func([InitAssetKey], [InitUploadResult], []),\n    init_proposal: IDL.Func([ProposalType], [IDL.Nat, Proposal], []),\n    init_proposal_asset_upload: IDL.Func([InitAssetKey, IDL.Nat], [InitUploadResult], []),\n    init_proposal_many_assets_upload: IDL.Func(\n      [IDL.Vec(InitAssetKey), IDL.Nat],\n      [IDL.Vec(IDL.Tuple(IDL.Text, InitUploadResult))],\n      []\n    ),\n    list_assets: IDL.Func([IDL.Text, ListParams], [ListResults], []),\n    list_controllers: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Principal, AccessKey))], []),\n    list_custom_domains: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, CustomDomain))], []),\n    list_docs: IDL.Func([IDL.Text, ListParams], [ListResults_1], []),\n    list_proposals: IDL.Func([ListProposalsParams], [ListProposalResults], []),\n    list_rules: IDL.Func([CollectionType, ListRulesParams], [ListRulesResults], []),\n    memory_size: IDL.Func([], [MemorySize], []),\n    reject_proposal: IDL.Func([CommitProposal], [IDL.Null], []),\n    set_asset_token: IDL.Func([IDL.Text, IDL.Text, IDL.Opt(IDL.Text)], [], []),\n    set_auth_config: IDL.Func([SetAuthenticationConfig], [AuthenticationConfig], []),\n    set_automation_config: IDL.Func([SetAutomationConfig], [AutomationConfig], []),\n    set_controllers: IDL.Func(\n      [SetControllersArgs],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, AccessKey))],\n      []\n    ),\n    set_custom_domain: IDL.Func([IDL.Text, IDL.Opt(IDL.Text)], [], []),\n    set_db_config: IDL.Func([SetDbConfig], [DbConfig], []),\n    set_doc: IDL.Func([IDL.Text, IDL.Text, SetDoc], [Doc], []),\n    set_many_docs: IDL.Func(\n      [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text, SetDoc))],\n      [IDL.Vec(IDL.Tuple(IDL.Text, Doc))],\n      []\n    ),\n    set_rule: IDL.Func([CollectionType, IDL.Text, SetRule], [Rule], []),\n    set_storage_config: IDL.Func([SetStorageConfig], [StorageConfig], []),\n    set_storage_config_with_options: IDL.Func([SetStorageConfigWithOptions], [StorageConfig], []),\n    submit_proposal: IDL.Func([IDL.Nat], [IDL.Nat, Proposal], []),\n    switch_storage_system_memory: IDL.Func([], [], []),\n    upload_asset_chunk: IDL.Func([UploadChunk], [UploadChunkResult], []),\n    upload_proposal_asset_chunk: IDL.Func([UploadChunk], [UploadChunkResult], [])\n  });\n};\n\nexport const init = ({IDL}) => {\n  const Memory = IDL.Variant({Heap: IDL.Null, Stable: IDL.Null});\n  const InitStorageArgs = IDL.Record({system_memory: IDL.Opt(Memory)});\n  const InitSatelliteArgs = IDL.Record({\n    controllers: IDL.Vec(IDL.Principal),\n    storage: IDL.Opt(InitStorageArgs)\n  });\n\n  return [InitSatelliteArgs];\n};\n", "/* eslint-disable */\n\n// @ts-nocheck\n\n// This file was automatically generated by @icp-sdk/bindgen@0.2.1.\n// You should NOT make any changes in this file as it will be overwritten.\n// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.\n\nexport const idlFactory = ({IDL}) => {\n  const Tokens = IDL.Record({e8s: IDL.Nat64});\n  const AssertMissionControlCenterArgs = IDL.Record({\n    mission_control_id: IDL.Principal,\n    user: IDL.Principal\n  });\n  const OpenIdPrepareDelegationArgs = IDL.Record({\n    jwt: IDL.Text,\n    session_key: IDL.Vec(IDL.Nat8),\n    salt: IDL.Vec(IDL.Nat8)\n  });\n  const AuthenticationArgs = IDL.Variant({\n    OpenId: OpenIdPrepareDelegationArgs\n  });\n  const PreparedDelegation = IDL.Record({\n    user_key: IDL.Vec(IDL.Nat8),\n    expiration: IDL.Nat64\n  });\n  const OpenIdDelegationProvider = IDL.Variant({\n    GitHub: IDL.Null,\n    Google: IDL.Null\n  });\n  const OpenIdData = IDL.Record({\n    name: IDL.Opt(IDL.Text),\n    locale: IDL.Opt(IDL.Text),\n    family_name: IDL.Opt(IDL.Text),\n    email: IDL.Opt(IDL.Text),\n    picture: IDL.Opt(IDL.Text),\n    given_name: IDL.Opt(IDL.Text),\n    preferred_username: IDL.Opt(IDL.Text)\n  });\n  const OpenId = IDL.Record({\n    provider: OpenIdDelegationProvider,\n    data: OpenIdData\n  });\n  const Provider = IDL.Variant({\n    InternetIdentity: IDL.Null,\n    OpenId: OpenId\n  });\n  const Account = IDL.Record({\n    updated_at: IDL.Nat64,\n    credits: Tokens,\n    mission_control_id: IDL.Opt(IDL.Principal),\n    provider: IDL.Opt(Provider),\n    owner: IDL.Principal,\n    created_at: IDL.Nat64\n  });\n  const Authentication = IDL.Record({\n    delegation: PreparedDelegation,\n    account: Account\n  });\n  const JwtFindProviderError = IDL.Variant({\n    BadClaim: IDL.Text,\n    BadSig: IDL.Text,\n    NoMatchingProvider: IDL.Null\n  });\n  const JwtVerifyError = IDL.Variant({\n    WrongKeyType: IDL.Null,\n    MissingKid: IDL.Null,\n    BadClaim: IDL.Text,\n    BadSig: IDL.Text,\n    NoKeyForKid: IDL.Null\n  });\n  const GetOrRefreshJwksError = IDL.Variant({\n    InvalidConfig: IDL.Text,\n    MissingKid: IDL.Null,\n    BadClaim: IDL.Text,\n    KeyNotFoundCooldown: IDL.Null,\n    CertificateNotFound: IDL.Null,\n    BadSig: IDL.Text,\n    MissingLastAttempt: IDL.Text,\n    KeyNotFound: IDL.Null,\n    FetchFailed: IDL.Text\n  });\n  const PrepareDelegationError = IDL.Variant({\n    JwtFindProvider: JwtFindProviderError,\n    GetCachedJwks: IDL.Null,\n    JwtVerify: JwtVerifyError,\n    GetOrFetchJwks: GetOrRefreshJwksError,\n    DeriveSeedFailed: IDL.Text,\n    InvalidObservatoryId: IDL.Text\n  });\n  const AuthenticationError = IDL.Variant({\n    PrepareDelegation: PrepareDelegationError,\n    RegisterUser: IDL.Text\n  });\n  const Result = IDL.Variant({\n    Ok: Authentication,\n    Err: AuthenticationError\n  });\n  const CommitProposal = IDL.Record({\n    sha256: IDL.Vec(IDL.Nat8),\n    proposal_id: IDL.Nat\n  });\n  const CommitBatch = IDL.Record({\n    batch_id: IDL.Nat,\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    chunk_ids: IDL.Vec(IDL.Nat)\n  });\n  const CreateMissionControlArgs = IDL.Record({\n    subnet_id: IDL.Opt(IDL.Principal)\n  });\n  const CreateOrbiterArgs = IDL.Record({\n    block_index: IDL.Opt(IDL.Nat64),\n    subnet_id: IDL.Opt(IDL.Principal),\n    name: IDL.Opt(IDL.Text),\n    user: IDL.Principal\n  });\n  const InitStorageMemory = IDL.Variant({\n    Heap: IDL.Null,\n    Stable: IDL.Null\n  });\n  const InitStorageArgs = IDL.Record({\n    system_memory: IDL.Opt(InitStorageMemory)\n  });\n  const CreateSatelliteArgs = IDL.Record({\n    block_index: IDL.Opt(IDL.Nat64),\n    subnet_id: IDL.Opt(IDL.Principal),\n    storage: IDL.Opt(InitStorageArgs),\n    name: IDL.Opt(IDL.Text),\n    user: IDL.Principal\n  });\n  const DeleteControllersArgs = IDL.Record({\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const DeleteProposalAssets = IDL.Record({\n    proposal_ids: IDL.Vec(IDL.Nat)\n  });\n  const OpenIdAuthProviderDelegationConfig = IDL.Record({\n    targets: IDL.Opt(IDL.Vec(IDL.Principal)),\n    max_time_to_live: IDL.Opt(IDL.Nat64)\n  });\n  const OpenIdAuthProviderConfig = IDL.Record({\n    delegation: IDL.Opt(OpenIdAuthProviderDelegationConfig),\n    client_id: IDL.Text\n  });\n  const AuthenticationConfigOpenId = IDL.Record({\n    observatory_id: IDL.Opt(IDL.Principal),\n    providers: IDL.Vec(IDL.Tuple(OpenIdDelegationProvider, OpenIdAuthProviderConfig))\n  });\n  const AuthenticationConfigInternetIdentity = IDL.Record({\n    derivation_origin: IDL.Opt(IDL.Text),\n    external_alternative_origins: IDL.Opt(IDL.Vec(IDL.Text))\n  });\n  const AuthenticationRules = IDL.Record({\n    allowed_callers: IDL.Vec(IDL.Principal)\n  });\n  const AuthenticationConfig = IDL.Record({\n    updated_at: IDL.Opt(IDL.Nat64),\n    openid: IDL.Opt(AuthenticationConfigOpenId),\n    created_at: IDL.Opt(IDL.Nat64),\n    version: IDL.Opt(IDL.Nat64),\n    internet_identity: IDL.Opt(AuthenticationConfigInternetIdentity),\n    rules: IDL.Opt(AuthenticationRules)\n  });\n  const StorageConfigIFrame = IDL.Variant({\n    Deny: IDL.Null,\n    AllowAny: IDL.Null,\n    SameOrigin: IDL.Null\n  });\n  const ConfigMaxMemorySize = IDL.Record({\n    stable: IDL.Opt(IDL.Nat64),\n    heap: IDL.Opt(IDL.Nat64)\n  });\n  const StorageConfigRawAccess = IDL.Variant({\n    Deny: IDL.Null,\n    Allow: IDL.Null\n  });\n  const StorageConfigRedirect = IDL.Record({\n    status_code: IDL.Nat16,\n    location: IDL.Text\n  });\n  const StorageConfig = IDL.Record({\n    iframe: IDL.Opt(StorageConfigIFrame),\n    updated_at: IDL.Opt(IDL.Nat64),\n    rewrites: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)))),\n    created_at: IDL.Opt(IDL.Nat64),\n    version: IDL.Opt(IDL.Nat64),\n    max_memory_size: IDL.Opt(ConfigMaxMemorySize),\n    raw_access: IDL.Opt(StorageConfigRawAccess),\n    redirects: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, StorageConfigRedirect)))\n  });\n  const Config = IDL.Record({\n    authentication: IDL.Opt(AuthenticationConfig),\n    storage: StorageConfig\n  });\n  const GetCreateCanisterFeeArgs = IDL.Record({user: IDL.Principal});\n  const OpenIdGetDelegationArgs = IDL.Record({\n    jwt: IDL.Text,\n    session_key: IDL.Vec(IDL.Nat8),\n    salt: IDL.Vec(IDL.Nat8),\n    expiration: IDL.Nat64\n  });\n  const GetDelegationArgs = IDL.Variant({OpenId: OpenIdGetDelegationArgs});\n  const Delegation = IDL.Record({\n    pubkey: IDL.Vec(IDL.Nat8),\n    targets: IDL.Opt(IDL.Vec(IDL.Principal)),\n    expiration: IDL.Nat64\n  });\n  const SignedDelegation = IDL.Record({\n    signature: IDL.Vec(IDL.Nat8),\n    delegation: Delegation\n  });\n  const GetDelegationError = IDL.Variant({\n    JwtFindProvider: JwtFindProviderError,\n    GetCachedJwks: IDL.Null,\n    NoSuchDelegation: IDL.Null,\n    JwtVerify: JwtVerifyError,\n    GetOrFetchJwks: GetOrRefreshJwksError,\n    DeriveSeedFailed: IDL.Text,\n    InvalidObservatoryId: IDL.Text\n  });\n  const Result_1 = IDL.Variant({\n    Ok: SignedDelegation,\n    Err: GetDelegationError\n  });\n  const SegmentKind = IDL.Variant({\n    Orbiter: IDL.Null,\n    MissionControl: IDL.Null,\n    Satellite: IDL.Null\n  });\n  const CyclesTokens = IDL.Record({e12s: IDL.Nat64});\n  const FactoryFee = IDL.Record({\n    updated_at: IDL.Nat64,\n    fee_cycles: CyclesTokens,\n    fee_icp: IDL.Opt(Tokens)\n  });\n  const ProposalStatus = IDL.Variant({\n    Initialized: IDL.Null,\n    Failed: IDL.Null,\n    Open: IDL.Null,\n    Rejected: IDL.Null,\n    Executed: IDL.Null,\n    Accepted: IDL.Null\n  });\n  const AssetsUpgradeOptions = IDL.Record({\n    clear_existing_assets: IDL.Opt(IDL.Bool)\n  });\n  const SegmentsDeploymentOptions = IDL.Record({\n    orbiter: IDL.Opt(IDL.Text),\n    mission_control_version: IDL.Opt(IDL.Text),\n    satellite_version: IDL.Opt(IDL.Text)\n  });\n  const ProposalType = IDL.Variant({\n    AssetsUpgrade: AssetsUpgradeOptions,\n    SegmentsDeployment: SegmentsDeploymentOptions\n  });\n  const Proposal = IDL.Record({\n    status: ProposalStatus,\n    updated_at: IDL.Nat64,\n    sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n    executed_at: IDL.Opt(IDL.Nat64),\n    owner: IDL.Principal,\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64),\n    proposal_type: ProposalType\n  });\n  const RateConfig = IDL.Record({\n    max_tokens: IDL.Nat64,\n    time_per_token_ns: IDL.Nat64\n  });\n  const HttpRequest = IDL.Record({\n    url: IDL.Text,\n    method: IDL.Text,\n    body: IDL.Vec(IDL.Nat8),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    certificate_version: IDL.Opt(IDL.Nat16)\n  });\n  const Memory = IDL.Variant({Heap: IDL.Null, Stable: IDL.Null});\n  const StreamingCallbackToken = IDL.Record({\n    memory: Memory,\n    token: IDL.Opt(IDL.Text),\n    sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    index: IDL.Nat64,\n    encoding_type: IDL.Text,\n    full_path: IDL.Text\n  });\n  const StreamingStrategy = IDL.Variant({\n    Callback: IDL.Record({\n      token: StreamingCallbackToken,\n      callback: IDL.Func([], [], ['query'])\n    })\n  });\n  const HttpResponse = IDL.Record({\n    body: IDL.Vec(IDL.Nat8),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    streaming_strategy: IDL.Opt(StreamingStrategy),\n    status_code: IDL.Nat16\n  });\n  const StreamingCallbackHttpResponse = IDL.Record({\n    token: IDL.Opt(StreamingCallbackToken),\n    body: IDL.Vec(IDL.Nat8)\n  });\n  const InitAssetKey = IDL.Record({\n    token: IDL.Opt(IDL.Text),\n    collection: IDL.Text,\n    name: IDL.Text,\n    description: IDL.Opt(IDL.Text),\n    encoding_type: IDL.Opt(IDL.Text),\n    full_path: IDL.Text\n  });\n  const InitUploadResult = IDL.Record({batch_id: IDL.Nat});\n  const ListOrderField = IDL.Variant({\n    UpdatedAt: IDL.Null,\n    Keys: IDL.Null,\n    CreatedAt: IDL.Null\n  });\n  const ListOrder = IDL.Record({field: ListOrderField, desc: IDL.Bool});\n  const TimestampMatcher = IDL.Variant({\n    Equal: IDL.Nat64,\n    Between: IDL.Tuple(IDL.Nat64, IDL.Nat64),\n    GreaterThan: IDL.Nat64,\n    LessThan: IDL.Nat64\n  });\n  const ListMatcher = IDL.Record({\n    key: IDL.Opt(IDL.Text),\n    updated_at: IDL.Opt(TimestampMatcher),\n    description: IDL.Opt(IDL.Text),\n    created_at: IDL.Opt(TimestampMatcher)\n  });\n  const ListPaginate = IDL.Record({\n    start_after: IDL.Opt(IDL.Text),\n    limit: IDL.Opt(IDL.Nat64)\n  });\n  const ListParams = IDL.Record({\n    order: IDL.Opt(ListOrder),\n    owner: IDL.Opt(IDL.Principal),\n    matcher: IDL.Opt(ListMatcher),\n    paginate: IDL.Opt(ListPaginate)\n  });\n  const AssetKey = IDL.Record({\n    token: IDL.Opt(IDL.Text),\n    collection: IDL.Text,\n    owner: IDL.Principal,\n    name: IDL.Text,\n    description: IDL.Opt(IDL.Text),\n    full_path: IDL.Text\n  });\n  const AssetEncodingNoContent = IDL.Record({\n    modified: IDL.Nat64,\n    sha256: IDL.Vec(IDL.Nat8),\n    total_length: IDL.Nat\n  });\n  const AssetNoContent = IDL.Record({\n    key: AssetKey,\n    updated_at: IDL.Nat64,\n    encodings: IDL.Vec(IDL.Tuple(IDL.Text, AssetEncodingNoContent)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const ListResults = IDL.Record({\n    matches_pages: IDL.Opt(IDL.Nat64),\n    matches_length: IDL.Nat64,\n    items_page: IDL.Opt(IDL.Nat64),\n    items: IDL.Vec(IDL.Tuple(IDL.Text, AssetNoContent)),\n    items_length: IDL.Nat64\n  });\n  const AccessKeyKind = IDL.Variant({\n    Emulator: IDL.Null,\n    Automation: IDL.Null\n  });\n  const AccessKeyScope = IDL.Variant({\n    Write: IDL.Null,\n    Admin: IDL.Null,\n    Submit: IDL.Null\n  });\n  const AccessKey = IDL.Record({\n    updated_at: IDL.Nat64,\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    kind: IDL.Opt(AccessKeyKind),\n    created_at: IDL.Nat64,\n    scope: AccessKeyScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const CustomDomain = IDL.Record({\n    updated_at: IDL.Nat64,\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64),\n    bn_id: IDL.Opt(IDL.Text)\n  });\n  const PaymentStatus = IDL.Variant({\n    Refunded: IDL.Null,\n    Acknowledged: IDL.Null,\n    Completed: IDL.Null\n  });\n  const IcpPayment = IDL.Record({\n    status: PaymentStatus,\n    updated_at: IDL.Nat64,\n    block_index_payment: IDL.Nat64,\n    mission_control_id: IDL.Opt(IDL.Principal),\n    created_at: IDL.Nat64,\n    block_index_refunded: IDL.Opt(IDL.Nat64)\n  });\n  const IcrcPaymentKey = IDL.Record({\n    block_index: IDL.Nat64,\n    ledger_id: IDL.Principal\n  });\n  const Account_1 = IDL.Record({\n    owner: IDL.Principal,\n    subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n  });\n  const IcrcPayment = IDL.Record({\n    status: PaymentStatus,\n    updated_at: IDL.Nat64,\n    created_at: IDL.Nat64,\n    block_index_refunded: IDL.Opt(IDL.Nat64),\n    purchaser: Account_1\n  });\n  const ListProposalsOrder = IDL.Record({desc: IDL.Bool});\n  const ListProposalsPaginate = IDL.Record({\n    start_after: IDL.Opt(IDL.Nat),\n    limit: IDL.Opt(IDL.Nat)\n  });\n  const ListProposalsParams = IDL.Record({\n    order: IDL.Opt(ListProposalsOrder),\n    paginate: IDL.Opt(ListProposalsPaginate)\n  });\n  const ProposalKey = IDL.Record({proposal_id: IDL.Nat});\n  const ListProposalResults = IDL.Record({\n    matches_length: IDL.Nat64,\n    items: IDL.Vec(IDL.Tuple(ProposalKey, Proposal)),\n    items_length: IDL.Nat64\n  });\n  const StorableSegmentKind = IDL.Variant({\n    Orbiter: IDL.Null,\n    Satellite: IDL.Null\n  });\n  const ListSegmentsArgs = IDL.Record({\n    segment_id: IDL.Opt(IDL.Principal),\n    segment_kind: IDL.Opt(StorableSegmentKind)\n  });\n  const SegmentKey = IDL.Record({\n    user: IDL.Principal,\n    segment_id: IDL.Principal,\n    segment_kind: StorableSegmentKind\n  });\n  const Segment = IDL.Record({\n    updated_at: IDL.Nat64,\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    segment_id: IDL.Principal,\n    created_at: IDL.Nat64\n  });\n  const SetAuthenticationConfig = IDL.Record({\n    openid: IDL.Opt(AuthenticationConfigOpenId),\n    version: IDL.Opt(IDL.Nat64),\n    internet_identity: IDL.Opt(AuthenticationConfigInternetIdentity),\n    rules: IDL.Opt(AuthenticationRules)\n  });\n  const SetAccessKey = IDL.Record({\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    kind: IDL.Opt(AccessKeyKind),\n    scope: AccessKeyScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const SetControllersArgs = IDL.Record({\n    controller: SetAccessKey,\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const FeesArgs = IDL.Record({\n    fee_cycles: CyclesTokens,\n    fee_icp: IDL.Opt(Tokens)\n  });\n  const SetSegmentsArgs = IDL.Record({\n    metadata: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))),\n    segment_id: IDL.Principal,\n    segment_kind: StorableSegmentKind\n  });\n  const SetSegmentMetadataArgs = IDL.Record({\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    segment_id: IDL.Principal,\n    segment_kind: StorableSegmentKind\n  });\n  const SetStorageConfig = IDL.Record({\n    iframe: IDL.Opt(StorageConfigIFrame),\n    rewrites: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)))),\n    version: IDL.Opt(IDL.Nat64),\n    max_memory_size: IDL.Opt(ConfigMaxMemorySize),\n    raw_access: IDL.Opt(StorageConfigRawAccess),\n    redirects: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, StorageConfigRedirect)))\n  });\n  const UnsetSegmentsArgs = IDL.Record({\n    segment_id: IDL.Principal,\n    segment_kind: StorableSegmentKind\n  });\n  const UploadChunk = IDL.Record({\n    content: IDL.Vec(IDL.Nat8),\n    batch_id: IDL.Nat,\n    order_id: IDL.Opt(IDL.Nat)\n  });\n  const UploadChunkResult = IDL.Record({chunk_id: IDL.Nat});\n\n  return IDL.Service({\n    add_credits: IDL.Func([IDL.Principal, Tokens], [], []),\n    add_invitation_code: IDL.Func([IDL.Text], [], []),\n    assert_mission_control_center: IDL.Func([AssertMissionControlCenterArgs], [], ['query']),\n    authenticate: IDL.Func([AuthenticationArgs], [Result], []),\n    commit_proposal: IDL.Func([CommitProposal], [IDL.Null], []),\n    commit_proposal_asset_upload: IDL.Func([CommitBatch], [], []),\n    commit_proposal_many_assets_upload: IDL.Func([IDL.Vec(CommitBatch)], [], []),\n    count_proposals: IDL.Func([], [IDL.Nat64], ['query']),\n    create_mission_control: IDL.Func([CreateMissionControlArgs], [IDL.Principal], []),\n    create_orbiter: IDL.Func([CreateOrbiterArgs], [IDL.Principal], []),\n    create_satellite: IDL.Func([CreateSatelliteArgs], [IDL.Principal], []),\n    del_controllers: IDL.Func([DeleteControllersArgs], [], []),\n    del_custom_domain: IDL.Func([IDL.Text], [], []),\n    delete_proposal_assets: IDL.Func([DeleteProposalAssets], [], []),\n    get_account: IDL.Func([], [IDL.Opt(Account)], ['query']),\n    get_auth_config: IDL.Func([], [IDL.Opt(AuthenticationConfig)], ['query']),\n    get_config: IDL.Func([], [Config], ['query']),\n    get_create_orbiter_fee: IDL.Func([GetCreateCanisterFeeArgs], [IDL.Opt(Tokens)], ['query']),\n    get_create_satellite_fee: IDL.Func([GetCreateCanisterFeeArgs], [IDL.Opt(Tokens)], ['query']),\n    get_credits: IDL.Func([], [Tokens], ['query']),\n    get_delegation: IDL.Func([GetDelegationArgs], [Result_1], ['query']),\n    get_fee: IDL.Func([SegmentKind], [FactoryFee], ['query']),\n    get_or_init_account: IDL.Func([], [Account], []),\n    get_proposal: IDL.Func([IDL.Nat], [IDL.Opt(Proposal)], ['query']),\n    get_rate_config: IDL.Func([SegmentKind], [RateConfig], ['query']),\n    get_storage_config: IDL.Func([], [StorageConfig], ['query']),\n    http_request: IDL.Func([HttpRequest], [HttpResponse], ['query']),\n    http_request_streaming_callback: IDL.Func(\n      [StreamingCallbackToken],\n      [StreamingCallbackHttpResponse],\n      ['query']\n    ),\n    init_proposal: IDL.Func([ProposalType], [IDL.Nat, Proposal], []),\n    init_proposal_asset_upload: IDL.Func([InitAssetKey, IDL.Nat], [InitUploadResult], []),\n    init_proposal_many_assets_upload: IDL.Func(\n      [IDL.Vec(InitAssetKey), IDL.Nat],\n      [IDL.Vec(IDL.Tuple(IDL.Text, InitUploadResult))],\n      []\n    ),\n    list_accounts: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Principal, Account))], ['query']),\n    list_assets: IDL.Func([IDL.Text, ListParams], [ListResults], ['query']),\n    list_controllers: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Principal, AccessKey))], ['query']),\n    list_custom_domains: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, CustomDomain))], ['query']),\n    list_icp_payments: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Nat64, IcpPayment))], ['query']),\n    list_icrc_payments: IDL.Func([], [IDL.Vec(IDL.Tuple(IcrcPaymentKey, IcrcPayment))], ['query']),\n    list_proposals: IDL.Func([ListProposalsParams], [ListProposalResults], ['query']),\n    list_segments: IDL.Func(\n      [ListSegmentsArgs],\n      [IDL.Vec(IDL.Tuple(SegmentKey, Segment))],\n      ['query']\n    ),\n    reject_proposal: IDL.Func([CommitProposal], [IDL.Null], []),\n    set_auth_config: IDL.Func([SetAuthenticationConfig], [AuthenticationConfig], []),\n    set_controllers: IDL.Func([SetControllersArgs], [], []),\n    set_custom_domain: IDL.Func([IDL.Text, IDL.Opt(IDL.Text)], [], []),\n    set_fee: IDL.Func([SegmentKind, FeesArgs], [], []),\n    set_many_segments: IDL.Func([IDL.Vec(SetSegmentsArgs)], [IDL.Vec(Segment)], []),\n    set_rate_config: IDL.Func([SegmentKind, RateConfig], [], []),\n    set_segment: IDL.Func([SetSegmentsArgs], [Segment], []),\n    set_segment_metadata: IDL.Func([SetSegmentMetadataArgs], [Segment], []),\n    set_storage_config: IDL.Func([SetStorageConfig], [StorageConfig], []),\n    submit_proposal: IDL.Func([IDL.Nat], [IDL.Nat, Proposal], []),\n    unset_many_segments: IDL.Func([IDL.Vec(UnsetSegmentsArgs)], [], []),\n    unset_segment: IDL.Func([UnsetSegmentsArgs], [], []),\n    upload_proposal_asset_chunk: IDL.Func([UploadChunk], [UploadChunkResult], [])\n  });\n};\n\nexport const init = ({IDL}) => {\n  return [];\n};\n", "/* eslint-disable */\n\n// @ts-nocheck\n\n// This file was automatically generated by @icp-sdk/bindgen@0.2.1.\n// You should NOT make any changes in this file as it will be overwritten.\n// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.\n\nexport const idlFactory = ({IDL}) => {\n  const Tokens = IDL.Record({e8s: IDL.Nat64});\n  const AssertMissionControlCenterArgs = IDL.Record({\n    mission_control_id: IDL.Principal,\n    user: IDL.Principal\n  });\n  const OpenIdPrepareDelegationArgs = IDL.Record({\n    jwt: IDL.Text,\n    session_key: IDL.Vec(IDL.Nat8),\n    salt: IDL.Vec(IDL.Nat8)\n  });\n  const AuthenticationArgs = IDL.Variant({\n    OpenId: OpenIdPrepareDelegationArgs\n  });\n  const PreparedDelegation = IDL.Record({\n    user_key: IDL.Vec(IDL.Nat8),\n    expiration: IDL.Nat64\n  });\n  const OpenIdDelegationProvider = IDL.Variant({\n    GitHub: IDL.Null,\n    Google: IDL.Null\n  });\n  const OpenIdData = IDL.Record({\n    name: IDL.Opt(IDL.Text),\n    locale: IDL.Opt(IDL.Text),\n    family_name: IDL.Opt(IDL.Text),\n    email: IDL.Opt(IDL.Text),\n    picture: IDL.Opt(IDL.Text),\n    given_name: IDL.Opt(IDL.Text),\n    preferred_username: IDL.Opt(IDL.Text)\n  });\n  const OpenId = IDL.Record({\n    provider: OpenIdDelegationProvider,\n    data: OpenIdData\n  });\n  const Provider = IDL.Variant({\n    InternetIdentity: IDL.Null,\n    OpenId: OpenId\n  });\n  const Account = IDL.Record({\n    updated_at: IDL.Nat64,\n    credits: Tokens,\n    mission_control_id: IDL.Opt(IDL.Principal),\n    provider: IDL.Opt(Provider),\n    owner: IDL.Principal,\n    created_at: IDL.Nat64\n  });\n  const Authentication = IDL.Record({\n    delegation: PreparedDelegation,\n    account: Account\n  });\n  const JwtFindProviderError = IDL.Variant({\n    BadClaim: IDL.Text,\n    BadSig: IDL.Text,\n    NoMatchingProvider: IDL.Null\n  });\n  const JwtVerifyError = IDL.Variant({\n    WrongKeyType: IDL.Null,\n    MissingKid: IDL.Null,\n    BadClaim: IDL.Text,\n    BadSig: IDL.Text,\n    NoKeyForKid: IDL.Null\n  });\n  const GetOrRefreshJwksError = IDL.Variant({\n    InvalidConfig: IDL.Text,\n    MissingKid: IDL.Null,\n    BadClaim: IDL.Text,\n    KeyNotFoundCooldown: IDL.Null,\n    CertificateNotFound: IDL.Null,\n    BadSig: IDL.Text,\n    MissingLastAttempt: IDL.Text,\n    KeyNotFound: IDL.Null,\n    FetchFailed: IDL.Text\n  });\n  const PrepareDelegationError = IDL.Variant({\n    JwtFindProvider: JwtFindProviderError,\n    GetCachedJwks: IDL.Null,\n    JwtVerify: JwtVerifyError,\n    GetOrFetchJwks: GetOrRefreshJwksError,\n    DeriveSeedFailed: IDL.Text,\n    InvalidObservatoryId: IDL.Text\n  });\n  const AuthenticationError = IDL.Variant({\n    PrepareDelegation: PrepareDelegationError,\n    RegisterUser: IDL.Text\n  });\n  const Result = IDL.Variant({\n    Ok: Authentication,\n    Err: AuthenticationError\n  });\n  const CommitProposal = IDL.Record({\n    sha256: IDL.Vec(IDL.Nat8),\n    proposal_id: IDL.Nat\n  });\n  const CommitBatch = IDL.Record({\n    batch_id: IDL.Nat,\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    chunk_ids: IDL.Vec(IDL.Nat)\n  });\n  const CreateMissionControlArgs = IDL.Record({\n    subnet_id: IDL.Opt(IDL.Principal)\n  });\n  const CreateOrbiterArgs = IDL.Record({\n    block_index: IDL.Opt(IDL.Nat64),\n    subnet_id: IDL.Opt(IDL.Principal),\n    name: IDL.Opt(IDL.Text),\n    user: IDL.Principal\n  });\n  const InitStorageMemory = IDL.Variant({\n    Heap: IDL.Null,\n    Stable: IDL.Null\n  });\n  const InitStorageArgs = IDL.Record({\n    system_memory: IDL.Opt(InitStorageMemory)\n  });\n  const CreateSatelliteArgs = IDL.Record({\n    block_index: IDL.Opt(IDL.Nat64),\n    subnet_id: IDL.Opt(IDL.Principal),\n    storage: IDL.Opt(InitStorageArgs),\n    name: IDL.Opt(IDL.Text),\n    user: IDL.Principal\n  });\n  const DeleteControllersArgs = IDL.Record({\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const DeleteProposalAssets = IDL.Record({\n    proposal_ids: IDL.Vec(IDL.Nat)\n  });\n  const OpenIdAuthProviderDelegationConfig = IDL.Record({\n    targets: IDL.Opt(IDL.Vec(IDL.Principal)),\n    max_time_to_live: IDL.Opt(IDL.Nat64)\n  });\n  const OpenIdAuthProviderConfig = IDL.Record({\n    delegation: IDL.Opt(OpenIdAuthProviderDelegationConfig),\n    client_id: IDL.Text\n  });\n  const AuthenticationConfigOpenId = IDL.Record({\n    observatory_id: IDL.Opt(IDL.Principal),\n    providers: IDL.Vec(IDL.Tuple(OpenIdDelegationProvider, OpenIdAuthProviderConfig))\n  });\n  const AuthenticationConfigInternetIdentity = IDL.Record({\n    derivation_origin: IDL.Opt(IDL.Text),\n    external_alternative_origins: IDL.Opt(IDL.Vec(IDL.Text))\n  });\n  const AuthenticationRules = IDL.Record({\n    allowed_callers: IDL.Vec(IDL.Principal)\n  });\n  const AuthenticationConfig = IDL.Record({\n    updated_at: IDL.Opt(IDL.Nat64),\n    openid: IDL.Opt(AuthenticationConfigOpenId),\n    created_at: IDL.Opt(IDL.Nat64),\n    version: IDL.Opt(IDL.Nat64),\n    internet_identity: IDL.Opt(AuthenticationConfigInternetIdentity),\n    rules: IDL.Opt(AuthenticationRules)\n  });\n  const StorageConfigIFrame = IDL.Variant({\n    Deny: IDL.Null,\n    AllowAny: IDL.Null,\n    SameOrigin: IDL.Null\n  });\n  const ConfigMaxMemorySize = IDL.Record({\n    stable: IDL.Opt(IDL.Nat64),\n    heap: IDL.Opt(IDL.Nat64)\n  });\n  const StorageConfigRawAccess = IDL.Variant({\n    Deny: IDL.Null,\n    Allow: IDL.Null\n  });\n  const StorageConfigRedirect = IDL.Record({\n    status_code: IDL.Nat16,\n    location: IDL.Text\n  });\n  const StorageConfig = IDL.Record({\n    iframe: IDL.Opt(StorageConfigIFrame),\n    updated_at: IDL.Opt(IDL.Nat64),\n    rewrites: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)))),\n    created_at: IDL.Opt(IDL.Nat64),\n    version: IDL.Opt(IDL.Nat64),\n    max_memory_size: IDL.Opt(ConfigMaxMemorySize),\n    raw_access: IDL.Opt(StorageConfigRawAccess),\n    redirects: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, StorageConfigRedirect)))\n  });\n  const Config = IDL.Record({\n    authentication: IDL.Opt(AuthenticationConfig),\n    storage: StorageConfig\n  });\n  const GetCreateCanisterFeeArgs = IDL.Record({user: IDL.Principal});\n  const OpenIdGetDelegationArgs = IDL.Record({\n    jwt: IDL.Text,\n    session_key: IDL.Vec(IDL.Nat8),\n    salt: IDL.Vec(IDL.Nat8),\n    expiration: IDL.Nat64\n  });\n  const GetDelegationArgs = IDL.Variant({OpenId: OpenIdGetDelegationArgs});\n  const Delegation = IDL.Record({\n    pubkey: IDL.Vec(IDL.Nat8),\n    targets: IDL.Opt(IDL.Vec(IDL.Principal)),\n    expiration: IDL.Nat64\n  });\n  const SignedDelegation = IDL.Record({\n    signature: IDL.Vec(IDL.Nat8),\n    delegation: Delegation\n  });\n  const GetDelegationError = IDL.Variant({\n    JwtFindProvider: JwtFindProviderError,\n    GetCachedJwks: IDL.Null,\n    NoSuchDelegation: IDL.Null,\n    JwtVerify: JwtVerifyError,\n    GetOrFetchJwks: GetOrRefreshJwksError,\n    DeriveSeedFailed: IDL.Text,\n    InvalidObservatoryId: IDL.Text\n  });\n  const Result_1 = IDL.Variant({\n    Ok: SignedDelegation,\n    Err: GetDelegationError\n  });\n  const SegmentKind = IDL.Variant({\n    Orbiter: IDL.Null,\n    MissionControl: IDL.Null,\n    Satellite: IDL.Null\n  });\n  const CyclesTokens = IDL.Record({e12s: IDL.Nat64});\n  const FactoryFee = IDL.Record({\n    updated_at: IDL.Nat64,\n    fee_cycles: CyclesTokens,\n    fee_icp: IDL.Opt(Tokens)\n  });\n  const ProposalStatus = IDL.Variant({\n    Initialized: IDL.Null,\n    Failed: IDL.Null,\n    Open: IDL.Null,\n    Rejected: IDL.Null,\n    Executed: IDL.Null,\n    Accepted: IDL.Null\n  });\n  const AssetsUpgradeOptions = IDL.Record({\n    clear_existing_assets: IDL.Opt(IDL.Bool)\n  });\n  const SegmentsDeploymentOptions = IDL.Record({\n    orbiter: IDL.Opt(IDL.Text),\n    mission_control_version: IDL.Opt(IDL.Text),\n    satellite_version: IDL.Opt(IDL.Text)\n  });\n  const ProposalType = IDL.Variant({\n    AssetsUpgrade: AssetsUpgradeOptions,\n    SegmentsDeployment: SegmentsDeploymentOptions\n  });\n  const Proposal = IDL.Record({\n    status: ProposalStatus,\n    updated_at: IDL.Nat64,\n    sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n    executed_at: IDL.Opt(IDL.Nat64),\n    owner: IDL.Principal,\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64),\n    proposal_type: ProposalType\n  });\n  const RateConfig = IDL.Record({\n    max_tokens: IDL.Nat64,\n    time_per_token_ns: IDL.Nat64\n  });\n  const HttpRequest = IDL.Record({\n    url: IDL.Text,\n    method: IDL.Text,\n    body: IDL.Vec(IDL.Nat8),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    certificate_version: IDL.Opt(IDL.Nat16)\n  });\n  const Memory = IDL.Variant({Heap: IDL.Null, Stable: IDL.Null});\n  const StreamingCallbackToken = IDL.Record({\n    memory: Memory,\n    token: IDL.Opt(IDL.Text),\n    sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    index: IDL.Nat64,\n    encoding_type: IDL.Text,\n    full_path: IDL.Text\n  });\n  const StreamingStrategy = IDL.Variant({\n    Callback: IDL.Record({\n      token: StreamingCallbackToken,\n      callback: IDL.Func([], [], [])\n    })\n  });\n  const HttpResponse = IDL.Record({\n    body: IDL.Vec(IDL.Nat8),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    streaming_strategy: IDL.Opt(StreamingStrategy),\n    status_code: IDL.Nat16\n  });\n  const StreamingCallbackHttpResponse = IDL.Record({\n    token: IDL.Opt(StreamingCallbackToken),\n    body: IDL.Vec(IDL.Nat8)\n  });\n  const InitAssetKey = IDL.Record({\n    token: IDL.Opt(IDL.Text),\n    collection: IDL.Text,\n    name: IDL.Text,\n    description: IDL.Opt(IDL.Text),\n    encoding_type: IDL.Opt(IDL.Text),\n    full_path: IDL.Text\n  });\n  const InitUploadResult = IDL.Record({batch_id: IDL.Nat});\n  const ListOrderField = IDL.Variant({\n    UpdatedAt: IDL.Null,\n    Keys: IDL.Null,\n    CreatedAt: IDL.Null\n  });\n  const ListOrder = IDL.Record({field: ListOrderField, desc: IDL.Bool});\n  const TimestampMatcher = IDL.Variant({\n    Equal: IDL.Nat64,\n    Between: IDL.Tuple(IDL.Nat64, IDL.Nat64),\n    GreaterThan: IDL.Nat64,\n    LessThan: IDL.Nat64\n  });\n  const ListMatcher = IDL.Record({\n    key: IDL.Opt(IDL.Text),\n    updated_at: IDL.Opt(TimestampMatcher),\n    description: IDL.Opt(IDL.Text),\n    created_at: IDL.Opt(TimestampMatcher)\n  });\n  const ListPaginate = IDL.Record({\n    start_after: IDL.Opt(IDL.Text),\n    limit: IDL.Opt(IDL.Nat64)\n  });\n  const ListParams = IDL.Record({\n    order: IDL.Opt(ListOrder),\n    owner: IDL.Opt(IDL.Principal),\n    matcher: IDL.Opt(ListMatcher),\n    paginate: IDL.Opt(ListPaginate)\n  });\n  const AssetKey = IDL.Record({\n    token: IDL.Opt(IDL.Text),\n    collection: IDL.Text,\n    owner: IDL.Principal,\n    name: IDL.Text,\n    description: IDL.Opt(IDL.Text),\n    full_path: IDL.Text\n  });\n  const AssetEncodingNoContent = IDL.Record({\n    modified: IDL.Nat64,\n    sha256: IDL.Vec(IDL.Nat8),\n    total_length: IDL.Nat\n  });\n  const AssetNoContent = IDL.Record({\n    key: AssetKey,\n    updated_at: IDL.Nat64,\n    encodings: IDL.Vec(IDL.Tuple(IDL.Text, AssetEncodingNoContent)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const ListResults = IDL.Record({\n    matches_pages: IDL.Opt(IDL.Nat64),\n    matches_length: IDL.Nat64,\n    items_page: IDL.Opt(IDL.Nat64),\n    items: IDL.Vec(IDL.Tuple(IDL.Text, AssetNoContent)),\n    items_length: IDL.Nat64\n  });\n  const AccessKeyKind = IDL.Variant({\n    Emulator: IDL.Null,\n    Automation: IDL.Null\n  });\n  const AccessKeyScope = IDL.Variant({\n    Write: IDL.Null,\n    Admin: IDL.Null,\n    Submit: IDL.Null\n  });\n  const AccessKey = IDL.Record({\n    updated_at: IDL.Nat64,\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    kind: IDL.Opt(AccessKeyKind),\n    created_at: IDL.Nat64,\n    scope: AccessKeyScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const CustomDomain = IDL.Record({\n    updated_at: IDL.Nat64,\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64),\n    bn_id: IDL.Opt(IDL.Text)\n  });\n  const PaymentStatus = IDL.Variant({\n    Refunded: IDL.Null,\n    Acknowledged: IDL.Null,\n    Completed: IDL.Null\n  });\n  const IcpPayment = IDL.Record({\n    status: PaymentStatus,\n    updated_at: IDL.Nat64,\n    block_index_payment: IDL.Nat64,\n    mission_control_id: IDL.Opt(IDL.Principal),\n    created_at: IDL.Nat64,\n    block_index_refunded: IDL.Opt(IDL.Nat64)\n  });\n  const IcrcPaymentKey = IDL.Record({\n    block_index: IDL.Nat64,\n    ledger_id: IDL.Principal\n  });\n  const Account_1 = IDL.Record({\n    owner: IDL.Principal,\n    subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n  });\n  const IcrcPayment = IDL.Record({\n    status: PaymentStatus,\n    updated_at: IDL.Nat64,\n    created_at: IDL.Nat64,\n    block_index_refunded: IDL.Opt(IDL.Nat64),\n    purchaser: Account_1\n  });\n  const ListProposalsOrder = IDL.Record({desc: IDL.Bool});\n  const ListProposalsPaginate = IDL.Record({\n    start_after: IDL.Opt(IDL.Nat),\n    limit: IDL.Opt(IDL.Nat)\n  });\n  const ListProposalsParams = IDL.Record({\n    order: IDL.Opt(ListProposalsOrder),\n    paginate: IDL.Opt(ListProposalsPaginate)\n  });\n  const ProposalKey = IDL.Record({proposal_id: IDL.Nat});\n  const ListProposalResults = IDL.Record({\n    matches_length: IDL.Nat64,\n    items: IDL.Vec(IDL.Tuple(ProposalKey, Proposal)),\n    items_length: IDL.Nat64\n  });\n  const StorableSegmentKind = IDL.Variant({\n    Orbiter: IDL.Null,\n    Satellite: IDL.Null\n  });\n  const ListSegmentsArgs = IDL.Record({\n    segment_id: IDL.Opt(IDL.Principal),\n    segment_kind: IDL.Opt(StorableSegmentKind)\n  });\n  const SegmentKey = IDL.Record({\n    user: IDL.Principal,\n    segment_id: IDL.Principal,\n    segment_kind: StorableSegmentKind\n  });\n  const Segment = IDL.Record({\n    updated_at: IDL.Nat64,\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    segment_id: IDL.Principal,\n    created_at: IDL.Nat64\n  });\n  const SetAuthenticationConfig = IDL.Record({\n    openid: IDL.Opt(AuthenticationConfigOpenId),\n    version: IDL.Opt(IDL.Nat64),\n    internet_identity: IDL.Opt(AuthenticationConfigInternetIdentity),\n    rules: IDL.Opt(AuthenticationRules)\n  });\n  const SetAccessKey = IDL.Record({\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    kind: IDL.Opt(AccessKeyKind),\n    scope: AccessKeyScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const SetControllersArgs = IDL.Record({\n    controller: SetAccessKey,\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const FeesArgs = IDL.Record({\n    fee_cycles: CyclesTokens,\n    fee_icp: IDL.Opt(Tokens)\n  });\n  const SetSegmentsArgs = IDL.Record({\n    metadata: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))),\n    segment_id: IDL.Principal,\n    segment_kind: StorableSegmentKind\n  });\n  const SetSegmentMetadataArgs = IDL.Record({\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    segment_id: IDL.Principal,\n    segment_kind: StorableSegmentKind\n  });\n  const SetStorageConfig = IDL.Record({\n    iframe: IDL.Opt(StorageConfigIFrame),\n    rewrites: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)))),\n    version: IDL.Opt(IDL.Nat64),\n    max_memory_size: IDL.Opt(ConfigMaxMemorySize),\n    raw_access: IDL.Opt(StorageConfigRawAccess),\n    redirects: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, StorageConfigRedirect)))\n  });\n  const UnsetSegmentsArgs = IDL.Record({\n    segment_id: IDL.Principal,\n    segment_kind: StorableSegmentKind\n  });\n  const UploadChunk = IDL.Record({\n    content: IDL.Vec(IDL.Nat8),\n    batch_id: IDL.Nat,\n    order_id: IDL.Opt(IDL.Nat)\n  });\n  const UploadChunkResult = IDL.Record({chunk_id: IDL.Nat});\n\n  return IDL.Service({\n    add_credits: IDL.Func([IDL.Principal, Tokens], [], []),\n    add_invitation_code: IDL.Func([IDL.Text], [], []),\n    assert_mission_control_center: IDL.Func([AssertMissionControlCenterArgs], [], []),\n    authenticate: IDL.Func([AuthenticationArgs], [Result], []),\n    commit_proposal: IDL.Func([CommitProposal], [IDL.Null], []),\n    commit_proposal_asset_upload: IDL.Func([CommitBatch], [], []),\n    commit_proposal_many_assets_upload: IDL.Func([IDL.Vec(CommitBatch)], [], []),\n    count_proposals: IDL.Func([], [IDL.Nat64], []),\n    create_mission_control: IDL.Func([CreateMissionControlArgs], [IDL.Principal], []),\n    create_orbiter: IDL.Func([CreateOrbiterArgs], [IDL.Principal], []),\n    create_satellite: IDL.Func([CreateSatelliteArgs], [IDL.Principal], []),\n    del_controllers: IDL.Func([DeleteControllersArgs], [], []),\n    del_custom_domain: IDL.Func([IDL.Text], [], []),\n    delete_proposal_assets: IDL.Func([DeleteProposalAssets], [], []),\n    get_account: IDL.Func([], [IDL.Opt(Account)], []),\n    get_auth_config: IDL.Func([], [IDL.Opt(AuthenticationConfig)], []),\n    get_config: IDL.Func([], [Config], []),\n    get_create_orbiter_fee: IDL.Func([GetCreateCanisterFeeArgs], [IDL.Opt(Tokens)], []),\n    get_create_satellite_fee: IDL.Func([GetCreateCanisterFeeArgs], [IDL.Opt(Tokens)], []),\n    get_credits: IDL.Func([], [Tokens], []),\n    get_delegation: IDL.Func([GetDelegationArgs], [Result_1], []),\n    get_fee: IDL.Func([SegmentKind], [FactoryFee], []),\n    get_or_init_account: IDL.Func([], [Account], []),\n    get_proposal: IDL.Func([IDL.Nat], [IDL.Opt(Proposal)], []),\n    get_rate_config: IDL.Func([SegmentKind], [RateConfig], []),\n    get_storage_config: IDL.Func([], [StorageConfig], []),\n    http_request: IDL.Func([HttpRequest], [HttpResponse], []),\n    http_request_streaming_callback: IDL.Func(\n      [StreamingCallbackToken],\n      [StreamingCallbackHttpResponse],\n      []\n    ),\n    init_proposal: IDL.Func([ProposalType], [IDL.Nat, Proposal], []),\n    init_proposal_asset_upload: IDL.Func([InitAssetKey, IDL.Nat], [InitUploadResult], []),\n    init_proposal_many_assets_upload: IDL.Func(\n      [IDL.Vec(InitAssetKey), IDL.Nat],\n      [IDL.Vec(IDL.Tuple(IDL.Text, InitUploadResult))],\n      []\n    ),\n    list_accounts: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Principal, Account))], []),\n    list_assets: IDL.Func([IDL.Text, ListParams], [ListResults], []),\n    list_controllers: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Principal, AccessKey))], []),\n    list_custom_domains: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, CustomDomain))], []),\n    list_icp_payments: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Nat64, IcpPayment))], []),\n    list_icrc_payments: IDL.Func([], [IDL.Vec(IDL.Tuple(IcrcPaymentKey, IcrcPayment))], []),\n    list_proposals: IDL.Func([ListProposalsParams], [ListProposalResults], []),\n    list_segments: IDL.Func([ListSegmentsArgs], [IDL.Vec(IDL.Tuple(SegmentKey, Segment))], []),\n    reject_proposal: IDL.Func([CommitProposal], [IDL.Null], []),\n    set_auth_config: IDL.Func([SetAuthenticationConfig], [AuthenticationConfig], []),\n    set_controllers: IDL.Func([SetControllersArgs], [], []),\n    set_custom_domain: IDL.Func([IDL.Text, IDL.Opt(IDL.Text)], [], []),\n    set_fee: IDL.Func([SegmentKind, FeesArgs], [], []),\n    set_many_segments: IDL.Func([IDL.Vec(SetSegmentsArgs)], [IDL.Vec(Segment)], []),\n    set_rate_config: IDL.Func([SegmentKind, RateConfig], [], []),\n    set_segment: IDL.Func([SetSegmentsArgs], [Segment], []),\n    set_segment_metadata: IDL.Func([SetSegmentMetadataArgs], [Segment], []),\n    set_storage_config: IDL.Func([SetStorageConfig], [StorageConfig], []),\n    submit_proposal: IDL.Func([IDL.Nat], [IDL.Nat, Proposal], []),\n    unset_many_segments: IDL.Func([IDL.Vec(UnsetSegmentsArgs)], [], []),\n    unset_segment: IDL.Func([UnsetSegmentsArgs], [], []),\n    upload_proposal_asset_chunk: IDL.Func([UploadChunk], [UploadChunkResult], [])\n  });\n};\n\nexport const init = ({IDL}) => {\n  return [];\n};\n", "/* eslint-disable */\n\n// @ts-nocheck\n\n// This file was automatically generated by @icp-sdk/bindgen@0.2.1.\n// You should NOT make any changes in this file as it will be overwritten.\n// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.\n\nexport const idlFactory = ({IDL}) => {\n  const Memory = IDL.Variant({Heap: IDL.Null, Stable: IDL.Null});\n  const InitStorageArgs = IDL.Record({system_memory: IDL.Opt(Memory)});\n  const InitSatelliteArgs = IDL.Record({\n    controllers: IDL.Vec(IDL.Principal),\n    storage: IDL.Opt(InitStorageArgs)\n  });\n  const OpenIdPrepareDelegationArgs = IDL.Record({\n    jwt: IDL.Text,\n    session_key: IDL.Vec(IDL.Nat8),\n    salt: IDL.Vec(IDL.Nat8)\n  });\n  const AuthenticationArgs = IDL.Variant({\n    OpenId: OpenIdPrepareDelegationArgs\n  });\n  const Doc = IDL.Record({\n    updated_at: IDL.Nat64,\n    owner: IDL.Principal,\n    data: IDL.Vec(IDL.Nat8),\n    description: IDL.Opt(IDL.Text),\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const PreparedDelegation = IDL.Record({\n    user_key: IDL.Vec(IDL.Nat8),\n    expiration: IDL.Nat64\n  });\n  const Authentication = IDL.Record({\n    doc: Doc,\n    delegation: PreparedDelegation\n  });\n  const JwtFindProviderError = IDL.Variant({\n    BadClaim: IDL.Text,\n    BadSig: IDL.Text,\n    NoMatchingProvider: IDL.Null\n  });\n  const JwtVerifyError = IDL.Variant({\n    WrongKeyType: IDL.Null,\n    MissingKid: IDL.Null,\n    BadClaim: IDL.Text,\n    BadSig: IDL.Text,\n    NoKeyForKid: IDL.Null\n  });\n  const GetOrRefreshJwksError = IDL.Variant({\n    InvalidConfig: IDL.Text,\n    MissingKid: IDL.Null,\n    BadClaim: IDL.Text,\n    KeyNotFoundCooldown: IDL.Null,\n    CertificateNotFound: IDL.Null,\n    BadSig: IDL.Text,\n    MissingLastAttempt: IDL.Text,\n    KeyNotFound: IDL.Null,\n    FetchFailed: IDL.Text\n  });\n  const PrepareDelegationError = IDL.Variant({\n    JwtFindProvider: JwtFindProviderError,\n    GetCachedJwks: IDL.Null,\n    JwtVerify: JwtVerifyError,\n    GetOrFetchJwks: GetOrRefreshJwksError,\n    DeriveSeedFailed: IDL.Text,\n    InvalidObservatoryId: IDL.Text\n  });\n  const AuthenticationError = IDL.Variant({\n    PrepareDelegation: PrepareDelegationError,\n    RegisterUser: IDL.Text\n  });\n  const AuthenticateResultResponse = IDL.Variant({\n    Ok: Authentication,\n    Err: AuthenticationError\n  });\n  const OpenIdPrepareAutomationArgs = IDL.Record({\n    jwt: IDL.Text,\n    salt: IDL.Vec(IDL.Nat8)\n  });\n  const AuthenticateAutomationArgs = IDL.Variant({\n    OpenId: OpenIdPrepareAutomationArgs\n  });\n  const AutomationScope = IDL.Variant({\n    Write: IDL.Null,\n    Submit: IDL.Null\n  });\n  const AutomationController = IDL.Record({\n    scope: AutomationScope,\n    expires_at: IDL.Nat64\n  });\n  const PrepareAutomationError = IDL.Variant({\n    JwtFindProvider: JwtFindProviderError,\n    InvalidController: IDL.Text,\n    GetCachedJwks: IDL.Null,\n    JwtVerify: JwtVerifyError,\n    GetOrFetchJwks: GetOrRefreshJwksError,\n    ControllerAlreadyExists: IDL.Null,\n    InvalidObservatoryId: IDL.Text,\n    TooManyControllers: IDL.Text\n  });\n  const AuthenticationAutomationError = IDL.Variant({\n    PrepareAutomation: PrepareAutomationError,\n    RegisterController: IDL.Text,\n    SaveWorkflowMetadata: IDL.Text,\n    SaveUniqueJtiToken: IDL.Text\n  });\n  const AuthenticateAutomationResultResponse = IDL.Variant({\n    Ok: IDL.Tuple(IDL.Principal, AutomationController),\n    Err: AuthenticationAutomationError\n  });\n  const AssetKey = IDL.Record({\n    token: IDL.Opt(IDL.Text),\n    collection: IDL.Text,\n    owner: IDL.Principal,\n    name: IDL.Text,\n    description: IDL.Opt(IDL.Text),\n    full_path: IDL.Text\n  });\n  const CertifyAssetsCursor = IDL.Variant({\n    Heap: IDL.Record({offset: IDL.Nat64}),\n    Stable: IDL.Record({key: IDL.Opt(AssetKey)})\n  });\n  const CertifyAssetsStrategy = IDL.Variant({\n    Append: IDL.Null,\n    Clear: IDL.Null,\n    AppendWithRouting: IDL.Null\n  });\n  const CertifyAssetsArgs = IDL.Record({\n    cursor: CertifyAssetsCursor,\n    strategy: CertifyAssetsStrategy,\n    chunk_size: IDL.Opt(IDL.Nat32)\n  });\n  const CertifyAssetsResult = IDL.Record({\n    next_cursor: IDL.Opt(CertifyAssetsCursor)\n  });\n  const CommitBatch = IDL.Record({\n    batch_id: IDL.Nat,\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    chunk_ids: IDL.Vec(IDL.Nat)\n  });\n  const CommitProposal = IDL.Record({\n    sha256: IDL.Vec(IDL.Nat8),\n    proposal_id: IDL.Nat\n  });\n  const ListOrderField = IDL.Variant({\n    UpdatedAt: IDL.Null,\n    Keys: IDL.Null,\n    CreatedAt: IDL.Null\n  });\n  const ListOrder = IDL.Record({field: ListOrderField, desc: IDL.Bool});\n  const TimestampMatcher = IDL.Variant({\n    Equal: IDL.Nat64,\n    Between: IDL.Tuple(IDL.Nat64, IDL.Nat64),\n    GreaterThan: IDL.Nat64,\n    LessThan: IDL.Nat64\n  });\n  const ListMatcher = IDL.Record({\n    key: IDL.Opt(IDL.Text),\n    updated_at: IDL.Opt(TimestampMatcher),\n    description: IDL.Opt(IDL.Text),\n    created_at: IDL.Opt(TimestampMatcher)\n  });\n  const ListPaginate = IDL.Record({\n    start_after: IDL.Opt(IDL.Text),\n    limit: IDL.Opt(IDL.Nat64)\n  });\n  const ListParams = IDL.Record({\n    order: IDL.Opt(ListOrder),\n    owner: IDL.Opt(IDL.Principal),\n    matcher: IDL.Opt(ListMatcher),\n    paginate: IDL.Opt(ListPaginate)\n  });\n  const DeleteControllersArgs = IDL.Record({\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const AccessKeyKind = IDL.Variant({\n    Emulator: IDL.Null,\n    Automation: IDL.Null\n  });\n  const AccessKeyScope = IDL.Variant({\n    Write: IDL.Null,\n    Admin: IDL.Null,\n    Submit: IDL.Null\n  });\n  const AccessKey = IDL.Record({\n    updated_at: IDL.Nat64,\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    kind: IDL.Opt(AccessKeyKind),\n    created_at: IDL.Nat64,\n    scope: AccessKeyScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const DelDoc = IDL.Record({version: IDL.Opt(IDL.Nat64)});\n  const CollectionType = IDL.Variant({Db: IDL.Null, Storage: IDL.Null});\n  const DelRule = IDL.Record({version: IDL.Opt(IDL.Nat64)});\n  const DeleteProposalAssets = IDL.Record({\n    proposal_ids: IDL.Vec(IDL.Nat)\n  });\n  const DepositCyclesArgs = IDL.Record({\n    cycles: IDL.Nat,\n    destination_id: IDL.Principal\n  });\n  const AssetEncodingNoContent = IDL.Record({\n    modified: IDL.Nat64,\n    sha256: IDL.Vec(IDL.Nat8),\n    total_length: IDL.Nat\n  });\n  const AssetNoContent = IDL.Record({\n    key: AssetKey,\n    updated_at: IDL.Nat64,\n    encodings: IDL.Vec(IDL.Tuple(IDL.Text, AssetEncodingNoContent)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const OpenIdDelegationProvider = IDL.Variant({\n    GitHub: IDL.Null,\n    Google: IDL.Null\n  });\n  const OpenIdAuthProviderDelegationConfig = IDL.Record({\n    targets: IDL.Opt(IDL.Vec(IDL.Principal)),\n    max_time_to_live: IDL.Opt(IDL.Nat64)\n  });\n  const OpenIdAuthProviderConfig = IDL.Record({\n    delegation: IDL.Opt(OpenIdAuthProviderDelegationConfig),\n    client_id: IDL.Text\n  });\n  const AuthenticationConfigOpenId = IDL.Record({\n    observatory_id: IDL.Opt(IDL.Principal),\n    providers: IDL.Vec(IDL.Tuple(OpenIdDelegationProvider, OpenIdAuthProviderConfig))\n  });\n  const AuthenticationConfigInternetIdentity = IDL.Record({\n    derivation_origin: IDL.Opt(IDL.Text),\n    external_alternative_origins: IDL.Opt(IDL.Vec(IDL.Text))\n  });\n  const AuthenticationRules = IDL.Record({\n    allowed_callers: IDL.Vec(IDL.Principal)\n  });\n  const AuthenticationConfig = IDL.Record({\n    updated_at: IDL.Opt(IDL.Nat64),\n    openid: IDL.Opt(AuthenticationConfigOpenId),\n    created_at: IDL.Opt(IDL.Nat64),\n    version: IDL.Opt(IDL.Nat64),\n    internet_identity: IDL.Opt(AuthenticationConfigInternetIdentity),\n    rules: IDL.Opt(AuthenticationRules)\n  });\n  const OpenIdAutomationProvider = IDL.Variant({GitHub: IDL.Null});\n  const OpenIdAutomationProviderControllerConfig = IDL.Record({\n    scope: IDL.Opt(AutomationScope),\n    max_time_to_live: IDL.Opt(IDL.Nat64)\n  });\n  const RepositoryKey = IDL.Record({owner: IDL.Text, name: IDL.Text});\n  const OpenIdAutomationRepositoryConfig = IDL.Record({\n    refs: IDL.Opt(IDL.Vec(IDL.Text))\n  });\n  const OpenIdAutomationProviderConfig = IDL.Record({\n    controller: IDL.Opt(OpenIdAutomationProviderControllerConfig),\n    repositories: IDL.Vec(IDL.Tuple(RepositoryKey, OpenIdAutomationRepositoryConfig))\n  });\n  const AutomationConfigOpenId = IDL.Record({\n    observatory_id: IDL.Opt(IDL.Principal),\n    providers: IDL.Vec(IDL.Tuple(OpenIdAutomationProvider, OpenIdAutomationProviderConfig))\n  });\n  const AutomationConfig = IDL.Record({\n    updated_at: IDL.Opt(IDL.Nat64),\n    openid: IDL.Opt(AutomationConfigOpenId),\n    created_at: IDL.Opt(IDL.Nat64),\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const ConfigMaxMemorySize = IDL.Record({\n    stable: IDL.Opt(IDL.Nat64),\n    heap: IDL.Opt(IDL.Nat64)\n  });\n  const DbConfig = IDL.Record({\n    updated_at: IDL.Opt(IDL.Nat64),\n    created_at: IDL.Opt(IDL.Nat64),\n    version: IDL.Opt(IDL.Nat64),\n    max_memory_size: IDL.Opt(ConfigMaxMemorySize)\n  });\n  const StorageConfigIFrame = IDL.Variant({\n    Deny: IDL.Null,\n    AllowAny: IDL.Null,\n    SameOrigin: IDL.Null\n  });\n  const StorageConfigRawAccess = IDL.Variant({\n    Deny: IDL.Null,\n    Allow: IDL.Null\n  });\n  const StorageConfigRedirect = IDL.Record({\n    status_code: IDL.Nat16,\n    location: IDL.Text\n  });\n  const StorageConfig = IDL.Record({\n    iframe: IDL.Opt(StorageConfigIFrame),\n    updated_at: IDL.Opt(IDL.Nat64),\n    rewrites: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)))),\n    created_at: IDL.Opt(IDL.Nat64),\n    version: IDL.Opt(IDL.Nat64),\n    max_memory_size: IDL.Opt(ConfigMaxMemorySize),\n    raw_access: IDL.Opt(StorageConfigRawAccess),\n    redirects: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, StorageConfigRedirect)))\n  });\n  const Config = IDL.Record({\n    db: IDL.Opt(DbConfig),\n    authentication: IDL.Opt(AuthenticationConfig),\n    storage: StorageConfig,\n    automation: IDL.Opt(AutomationConfig)\n  });\n  const OpenIdGetDelegationArgs = IDL.Record({\n    jwt: IDL.Text,\n    session_key: IDL.Vec(IDL.Nat8),\n    salt: IDL.Vec(IDL.Nat8),\n    expiration: IDL.Nat64\n  });\n  const GetDelegationArgs = IDL.Variant({OpenId: OpenIdGetDelegationArgs});\n  const Delegation = IDL.Record({\n    pubkey: IDL.Vec(IDL.Nat8),\n    targets: IDL.Opt(IDL.Vec(IDL.Principal)),\n    expiration: IDL.Nat64\n  });\n  const SignedDelegation = IDL.Record({\n    signature: IDL.Vec(IDL.Nat8),\n    delegation: Delegation\n  });\n  const GetDelegationError = IDL.Variant({\n    JwtFindProvider: JwtFindProviderError,\n    GetCachedJwks: IDL.Null,\n    NoSuchDelegation: IDL.Null,\n    JwtVerify: JwtVerifyError,\n    GetOrFetchJwks: GetOrRefreshJwksError,\n    DeriveSeedFailed: IDL.Text,\n    InvalidObservatoryId: IDL.Text\n  });\n  const GetDelegationResultResponse = IDL.Variant({\n    Ok: SignedDelegation,\n    Err: GetDelegationError\n  });\n  const ProposalStatus = IDL.Variant({\n    Initialized: IDL.Null,\n    Failed: IDL.Null,\n    Open: IDL.Null,\n    Rejected: IDL.Null,\n    Executed: IDL.Null,\n    Accepted: IDL.Null\n  });\n  const AssetsUpgradeOptions = IDL.Record({\n    clear_existing_assets: IDL.Opt(IDL.Bool)\n  });\n  const SegmentsDeploymentOptions = IDL.Record({\n    orbiter: IDL.Opt(IDL.Text),\n    mission_control_version: IDL.Opt(IDL.Text),\n    satellite_version: IDL.Opt(IDL.Text)\n  });\n  const ProposalType = IDL.Variant({\n    AssetsUpgrade: AssetsUpgradeOptions,\n    SegmentsDeployment: SegmentsDeploymentOptions\n  });\n  const Proposal = IDL.Record({\n    status: ProposalStatus,\n    updated_at: IDL.Nat64,\n    sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n    executed_at: IDL.Opt(IDL.Nat64),\n    owner: IDL.Principal,\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64),\n    proposal_type: ProposalType\n  });\n  const Permission = IDL.Variant({\n    Controllers: IDL.Null,\n    Private: IDL.Null,\n    Public: IDL.Null,\n    Managed: IDL.Null\n  });\n  const RateConfig = IDL.Record({\n    max_tokens: IDL.Nat64,\n    time_per_token_ns: IDL.Nat64\n  });\n  const Rule = IDL.Record({\n    max_capacity: IDL.Opt(IDL.Nat32),\n    memory: IDL.Opt(Memory),\n    updated_at: IDL.Nat64,\n    max_size: IDL.Opt(IDL.Nat),\n    read: Permission,\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64),\n    mutable_permissions: IDL.Opt(IDL.Bool),\n    rate_config: IDL.Opt(RateConfig),\n    write: Permission,\n    max_changes_per_user: IDL.Opt(IDL.Nat32)\n  });\n  const HttpRequest = IDL.Record({\n    url: IDL.Text,\n    method: IDL.Text,\n    body: IDL.Vec(IDL.Nat8),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    certificate_version: IDL.Opt(IDL.Nat16)\n  });\n  const StreamingCallbackToken = IDL.Record({\n    memory: Memory,\n    token: IDL.Opt(IDL.Text),\n    sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    index: IDL.Nat64,\n    encoding_type: IDL.Text,\n    full_path: IDL.Text\n  });\n  const StreamingStrategy = IDL.Variant({\n    Callback: IDL.Record({\n      token: StreamingCallbackToken,\n      callback: IDL.Func([], [], ['query'])\n    })\n  });\n  const HttpResponse = IDL.Record({\n    body: IDL.Vec(IDL.Nat8),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    streaming_strategy: IDL.Opt(StreamingStrategy),\n    status_code: IDL.Nat16\n  });\n  const StreamingCallbackHttpResponse = IDL.Record({\n    token: IDL.Opt(StreamingCallbackToken),\n    body: IDL.Vec(IDL.Nat8)\n  });\n  const InitAssetKey = IDL.Record({\n    token: IDL.Opt(IDL.Text),\n    collection: IDL.Text,\n    name: IDL.Text,\n    description: IDL.Opt(IDL.Text),\n    encoding_type: IDL.Opt(IDL.Text),\n    full_path: IDL.Text\n  });\n  const InitUploadResult = IDL.Record({batch_id: IDL.Nat});\n  const ListResults = IDL.Record({\n    matches_pages: IDL.Opt(IDL.Nat64),\n    matches_length: IDL.Nat64,\n    items_page: IDL.Opt(IDL.Nat64),\n    items: IDL.Vec(IDL.Tuple(IDL.Text, AssetNoContent)),\n    items_length: IDL.Nat64\n  });\n  const CustomDomain = IDL.Record({\n    updated_at: IDL.Nat64,\n    created_at: IDL.Nat64,\n    version: IDL.Opt(IDL.Nat64),\n    bn_id: IDL.Opt(IDL.Text)\n  });\n  const ListResults_1 = IDL.Record({\n    matches_pages: IDL.Opt(IDL.Nat64),\n    matches_length: IDL.Nat64,\n    items_page: IDL.Opt(IDL.Nat64),\n    items: IDL.Vec(IDL.Tuple(IDL.Text, Doc)),\n    items_length: IDL.Nat64\n  });\n  const ListProposalsOrder = IDL.Record({desc: IDL.Bool});\n  const ListProposalsPaginate = IDL.Record({\n    start_after: IDL.Opt(IDL.Nat),\n    limit: IDL.Opt(IDL.Nat)\n  });\n  const ListProposalsParams = IDL.Record({\n    order: IDL.Opt(ListProposalsOrder),\n    paginate: IDL.Opt(ListProposalsPaginate)\n  });\n  const ProposalKey = IDL.Record({proposal_id: IDL.Nat});\n  const ListProposalResults = IDL.Record({\n    matches_length: IDL.Nat64,\n    items: IDL.Vec(IDL.Tuple(ProposalKey, Proposal)),\n    items_length: IDL.Nat64\n  });\n  const ListRulesMatcher = IDL.Record({include_system: IDL.Bool});\n  const ListRulesParams = IDL.Record({matcher: IDL.Opt(ListRulesMatcher)});\n  const ListRulesResults = IDL.Record({\n    matches_length: IDL.Nat64,\n    items: IDL.Vec(IDL.Tuple(IDL.Text, Rule)),\n    items_length: IDL.Nat64\n  });\n  const MemorySize = IDL.Record({stable: IDL.Nat64, heap: IDL.Nat64});\n  const SetAuthenticationConfig = IDL.Record({\n    openid: IDL.Opt(AuthenticationConfigOpenId),\n    version: IDL.Opt(IDL.Nat64),\n    internet_identity: IDL.Opt(AuthenticationConfigInternetIdentity),\n    rules: IDL.Opt(AuthenticationRules)\n  });\n  const SetAutomationConfig = IDL.Record({\n    openid: IDL.Opt(AutomationConfigOpenId),\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const SetAccessKey = IDL.Record({\n    metadata: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    kind: IDL.Opt(AccessKeyKind),\n    scope: AccessKeyScope,\n    expires_at: IDL.Opt(IDL.Nat64)\n  });\n  const SetControllersArgs = IDL.Record({\n    controller: SetAccessKey,\n    controllers: IDL.Vec(IDL.Principal)\n  });\n  const SetDbConfig = IDL.Record({\n    version: IDL.Opt(IDL.Nat64),\n    max_memory_size: IDL.Opt(ConfigMaxMemorySize)\n  });\n  const SetDoc = IDL.Record({\n    data: IDL.Vec(IDL.Nat8),\n    description: IDL.Opt(IDL.Text),\n    version: IDL.Opt(IDL.Nat64)\n  });\n  const SetRule = IDL.Record({\n    max_capacity: IDL.Opt(IDL.Nat32),\n    memory: IDL.Opt(Memory),\n    max_size: IDL.Opt(IDL.Nat),\n    read: Permission,\n    version: IDL.Opt(IDL.Nat64),\n    mutable_permissions: IDL.Opt(IDL.Bool),\n    rate_config: IDL.Opt(RateConfig),\n    write: Permission,\n    max_changes_per_user: IDL.Opt(IDL.Nat32)\n  });\n  const SetStorageConfig = IDL.Record({\n    iframe: IDL.Opt(StorageConfigIFrame),\n    rewrites: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)),\n    headers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text)))),\n    version: IDL.Opt(IDL.Nat64),\n    max_memory_size: IDL.Opt(ConfigMaxMemorySize),\n    raw_access: IDL.Opt(StorageConfigRawAccess),\n    redirects: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, StorageConfigRedirect)))\n  });\n  const SetStorageConfigOptions = IDL.Record({\n    skip_certification: IDL.Opt(IDL.Bool)\n  });\n  const SetStorageConfigWithOptions = IDL.Record({\n    config: SetStorageConfig,\n    options: SetStorageConfigOptions\n  });\n  const UploadChunk = IDL.Record({\n    content: IDL.Vec(IDL.Nat8),\n    batch_id: IDL.Nat,\n    order_id: IDL.Opt(IDL.Nat)\n  });\n  const UploadChunkResult = IDL.Record({chunk_id: IDL.Nat});\n\n  return IDL.Service({\n    authenticate: IDL.Func([AuthenticationArgs], [AuthenticateResultResponse], []),\n    authenticate_automation: IDL.Func(\n      [AuthenticateAutomationArgs],\n      [AuthenticateAutomationResultResponse],\n      []\n    ),\n    certify_assets_chunk: IDL.Func([CertifyAssetsArgs], [CertifyAssetsResult], []),\n    commit_asset_upload: IDL.Func([CommitBatch], [], []),\n    commit_proposal: IDL.Func([CommitProposal], [IDL.Null], []),\n    commit_proposal_asset_upload: IDL.Func([CommitBatch], [], []),\n    commit_proposal_many_assets_upload: IDL.Func([IDL.Vec(CommitBatch)], [], []),\n    count_assets: IDL.Func([IDL.Text, ListParams], [IDL.Nat64], ['query']),\n    count_collection_assets: IDL.Func([IDL.Text], [IDL.Nat64], ['query']),\n    count_collection_docs: IDL.Func([IDL.Text], [IDL.Nat64], ['query']),\n    count_docs: IDL.Func([IDL.Text, ListParams], [IDL.Nat64], ['query']),\n    count_proposals: IDL.Func([], [IDL.Nat64], ['query']),\n    del_asset: IDL.Func([IDL.Text, IDL.Text], [], []),\n    del_assets: IDL.Func([IDL.Text], [], []),\n    del_controller_self: IDL.Func([], [], []),\n    del_controllers: IDL.Func(\n      [DeleteControllersArgs],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, AccessKey))],\n      []\n    ),\n    del_custom_domain: IDL.Func([IDL.Text], [], []),\n    del_doc: IDL.Func([IDL.Text, IDL.Text, DelDoc], [], []),\n    del_docs: IDL.Func([IDL.Text], [], []),\n    del_filtered_assets: IDL.Func([IDL.Text, ListParams], [], []),\n    del_filtered_docs: IDL.Func([IDL.Text, ListParams], [], []),\n    del_many_assets: IDL.Func([IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))], [], []),\n    del_many_docs: IDL.Func([IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text, DelDoc))], [], []),\n    del_rule: IDL.Func([CollectionType, IDL.Text, DelRule], [], []),\n    delete_proposal_assets: IDL.Func([DeleteProposalAssets], [], []),\n    deposit_cycles: IDL.Func([DepositCyclesArgs], [], []),\n    get_asset: IDL.Func([IDL.Text, IDL.Text], [IDL.Opt(AssetNoContent)], ['query']),\n    get_auth_config: IDL.Func([], [IDL.Opt(AuthenticationConfig)], ['query']),\n    get_automation_config: IDL.Func([], [IDL.Opt(AutomationConfig)], ['query']),\n    get_config: IDL.Func([], [Config], []),\n    get_db_config: IDL.Func([], [IDL.Opt(DbConfig)], ['query']),\n    get_delegation: IDL.Func([GetDelegationArgs], [GetDelegationResultResponse], ['query']),\n    get_doc: IDL.Func([IDL.Text, IDL.Text], [IDL.Opt(Doc)], ['query']),\n    get_many_assets: IDL.Func(\n      [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n      [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Opt(AssetNoContent)))],\n      ['query']\n    ),\n    get_many_docs: IDL.Func(\n      [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n      [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Opt(Doc)))],\n      ['query']\n    ),\n    get_proposal: IDL.Func([IDL.Nat], [IDL.Opt(Proposal)], ['query']),\n    get_rule: IDL.Func([CollectionType, IDL.Text], [IDL.Opt(Rule)], ['query']),\n    get_storage_config: IDL.Func([], [StorageConfig], ['query']),\n    http_request: IDL.Func([HttpRequest], [HttpResponse], ['query']),\n    http_request_streaming_callback: IDL.Func(\n      [StreamingCallbackToken],\n      [StreamingCallbackHttpResponse],\n      ['query']\n    ),\n    init_asset_upload: IDL.Func([InitAssetKey], [InitUploadResult], []),\n    init_proposal: IDL.Func([ProposalType], [IDL.Nat, Proposal], []),\n    init_proposal_asset_upload: IDL.Func([InitAssetKey, IDL.Nat], [InitUploadResult], []),\n    init_proposal_many_assets_upload: IDL.Func(\n      [IDL.Vec(InitAssetKey), IDL.Nat],\n      [IDL.Vec(IDL.Tuple(IDL.Text, InitUploadResult))],\n      []\n    ),\n    list_assets: IDL.Func([IDL.Text, ListParams], [ListResults], ['query']),\n    list_controllers: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Principal, AccessKey))], ['query']),\n    list_custom_domains: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, CustomDomain))], ['query']),\n    list_docs: IDL.Func([IDL.Text, ListParams], [ListResults_1], ['query']),\n    list_proposals: IDL.Func([ListProposalsParams], [ListProposalResults], ['query']),\n    list_rules: IDL.Func([CollectionType, ListRulesParams], [ListRulesResults], ['query']),\n    memory_size: IDL.Func([], [MemorySize], ['query']),\n    reject_proposal: IDL.Func([CommitProposal], [IDL.Null], []),\n    set_asset_token: IDL.Func([IDL.Text, IDL.Text, IDL.Opt(IDL.Text)], [], []),\n    set_auth_config: IDL.Func([SetAuthenticationConfig], [AuthenticationConfig], []),\n    set_automation_config: IDL.Func([SetAutomationConfig], [AutomationConfig], []),\n    set_controllers: IDL.Func(\n      [SetControllersArgs],\n      [IDL.Vec(IDL.Tuple(IDL.Principal, AccessKey))],\n      []\n    ),\n    set_custom_domain: IDL.Func([IDL.Text, IDL.Opt(IDL.Text)], [], []),\n    set_db_config: IDL.Func([SetDbConfig], [DbConfig], []),\n    set_doc: IDL.Func([IDL.Text, IDL.Text, SetDoc], [Doc], []),\n    set_many_docs: IDL.Func(\n      [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text, SetDoc))],\n      [IDL.Vec(IDL.Tuple(IDL.Text, Doc))],\n      []\n    ),\n    set_rule: IDL.Func([CollectionType, IDL.Text, SetRule], [Rule], []),\n    set_storage_config: IDL.Func([SetStorageConfig], [StorageConfig], []),\n    set_storage_config_with_options: IDL.Func([SetStorageConfigWithOptions], [StorageConfig], []),\n    submit_proposal: IDL.Func([IDL.Nat], [IDL.Nat, Proposal], []),\n    switch_storage_system_memory: IDL.Func([], [], []),\n    upload_asset_chunk: IDL.Func([UploadChunk], [UploadChunkResult], []),\n    upload_proposal_asset_chunk: IDL.Func([UploadChunk], [UploadChunkResult], [])\n  });\n};\n\nexport const init = ({IDL}) => {\n  const Memory = IDL.Variant({Heap: IDL.Null, Stable: IDL.Null});\n  const InitStorageArgs = IDL.Record({system_memory: IDL.Opt(Memory)});\n  const InitSatelliteArgs = IDL.Record({\n    controllers: IDL.Vec(IDL.Principal),\n    storage: IDL.Opt(InitStorageArgs)\n  });\n\n  return [InitSatelliteArgs];\n};\n", "import type {HttpAgent} from '@icp-sdk/core/agent';\nimport {nonNullish} from '@junobuild/utils';\nimport type {ActorParameters} from '../types/actor';\nimport {createAgent} from '../utils/agent.utils';\n\nexport const useOrInitAgent = async ({agent, ...rest}: ActorParameters): Promise<HttpAgent> =>\n  agent ?? (await initAgent(rest));\n\nconst initAgent = async ({\n  identity,\n  container\n}: Omit<ActorParameters, 'agent'>): Promise<HttpAgent> => {\n  const localActor = nonNullish(container) && container !== false;\n\n  const host = localActor\n    ? container === true\n      ? 'http://127.0.0.1:5987'\n      : container\n    : 'https://icp-api.io';\n\n  return await createAgent({\n    identity,\n    host,\n    localActor\n  });\n};\n", "import {HttpAgent} from '@icp-sdk/core/agent';\nimport type {ActorParameters} from '../types/actor';\n\n// We have this in a utils because we want to mock it for test purposes.\n// Not really happy with that, I welcome better ideas!\nexport const createAgent = async ({\n  identity,\n  host,\n  localActor\n}: Pick<ActorParameters, 'identity'> & {host: string; localActor: boolean}) =>\n  await HttpAgent.create({\n    identity,\n    host,\n    retryTimes: 10,\n    shouldFetchRootKey: localActor\n  });\n", "import type {ActorMethod, ActorSubclass} from '@icp-sdk/core/agent';\nimport type {IDL} from '@icp-sdk/core/candid';\nimport {\n  idlCertifiedFactorySatellite,\n  idlFactorySatellite,\n  type SatelliteActor\n} from '@junobuild/ic-client/actor';\nimport {assertNonNullish} from '@junobuild/utils';\nimport {ActorStore} from '../stores/actor.store';\nimport type {ActorKey} from '../types/actor';\nimport type {CallOptions} from '../types/call-options';\nimport type {SatelliteContext} from '../types/satellite';\nimport {customOrEnvContainer, customOrEnvSatelliteId} from '../utils/env.utils';\n\nexport const getSatelliteActor = ({\n  satellite,\n  options: {certified}\n}: {\n  satellite: SatelliteContext;\n  options: CallOptions;\n}): Promise<SatelliteActor> =>\n  getActor({\n    idlFactory: certified ? idlCertifiedFactorySatellite : idlFactorySatellite,\n    actorKey: `stock#${certified ? 'update' : 'query'}`,\n    ...satellite\n  });\n\nexport const getSatelliteExtendedActor = <T = Record<string, ActorMethod>>({\n  idlFactory,\n  ...rest\n}: SatelliteContext & {idlFactory: IDL.InterfaceFactory}): Promise<ActorSubclass<T>> =>\n  getActor({\n    idlFactory,\n    actorKey: 'extended#query',\n    ...rest\n  });\n\nconst getActor = async <T = Record<string, ActorMethod>>({\n  satelliteId: customSatelliteId,\n  container: customContainer,\n  ...rest\n}: SatelliteContext & {idlFactory: IDL.InterfaceFactory; actorKey: ActorKey}): Promise<\n  ActorSubclass<T>\n> => {\n  const {satelliteId} = customOrEnvSatelliteId({satelliteId: customSatelliteId});\n\n  assertNonNullish(satelliteId, 'No satellite ID defined. Did you initialize Juno?');\n\n  const {container} = customOrEnvContainer({container: customContainer});\n\n  return await ActorStore.getInstance().getActor({\n    satelliteId,\n    container,\n    ...rest\n  });\n};\n", "import {nonNullish} from '@junobuild/utils';\nimport {DOCKER_CONTAINER_URL} from '../constants/container.constants';\nimport {EnvStore} from '../stores/env.store';\nimport type {SatelliteContext} from '../types/satellite';\n\nexport const satelliteUrl = ({\n  satelliteId: customSatelliteId,\n  container: customContainer\n}: SatelliteContext): string => {\n  const {satelliteId} = customOrEnvSatelliteId({satelliteId: customSatelliteId});\n  const {container} = customOrEnvContainer({container: customContainer});\n\n  if (nonNullish(container) && container !== false) {\n    const {host: containerHost, protocol} = new URL(\n      container === true ? DOCKER_CONTAINER_URL : container\n    );\n    return `${protocol}//${satelliteId ?? 'unknown'}.${containerHost.replace('127.0.0.1', 'localhost')}`;\n  }\n\n  return `https://${satelliteId ?? 'unknown'}.icp0.io`;\n};\n\nexport const customOrEnvSatelliteId = ({\n  satelliteId\n}: Pick<SatelliteContext, 'satelliteId'>): Pick<SatelliteContext, 'satelliteId'> =>\n  nonNullish(satelliteId)\n    ? {satelliteId}\n    : (EnvStore.getInstance().get() ?? {satelliteId: undefined});\n\nexport const customOrEnvContainer = ({\n  container: customContainer\n}: Pick<SatelliteContext, 'container'>): Pick<SatelliteContext, 'container'> =>\n  nonNullish(customContainer)\n    ? {container: customContainer}\n    : (EnvStore.getInstance().get() ?? {container: undefined});\n", "import {Principal} from '@icp-sdk/core/principal';\nimport type {SatelliteDid} from '@junobuild/ic-client/actor';\nimport {isNullish, toNullable} from '@junobuild/utils';\nimport {ListError} from '../../auth/types/errors';\nimport type {ListParams, ListTimestampMatcher} from '../types/list';\n\nconst toListMatcherTimestamp = (\n  matcher?: ListTimestampMatcher\n): [] | [SatelliteDid.TimestampMatcher] => {\n  if (isNullish(matcher)) {\n    return toNullable();\n  }\n\n  switch (matcher.matcher) {\n    case 'equal':\n      return toNullable({Equal: matcher.timestamp});\n    case 'greaterThan':\n      return toNullable({GreaterThan: matcher.timestamp});\n    case 'lessThan':\n      return toNullable({LessThan: matcher.timestamp});\n    case 'between':\n      return toNullable({Between: [matcher.timestamps.start, matcher.timestamps.end]});\n    default:\n      throw new ListError('Invalid list matcher for timestamp', matcher);\n  }\n};\n\nexport const toListParams = ({\n  matcher,\n  paginate,\n  order,\n  owner\n}: ListParams): SatelliteDid.ListParams => ({\n  matcher: isNullish(matcher)\n    ? []\n    : [\n        {\n          key: toNullable(matcher.key),\n          description: toNullable(matcher.description),\n          created_at: toListMatcherTimestamp(matcher.createdAt),\n          updated_at: toListMatcherTimestamp(matcher.updatedAt)\n        }\n      ],\n  paginate: toNullable(\n    isNullish(paginate)\n      ? undefined\n      : {\n          start_after: toNullable(paginate.startAfter),\n          limit: toNullable(isNullish(paginate.limit) ? undefined : BigInt(paginate.limit))\n        }\n  ),\n  order: toNullable(\n    isNullish(order)\n      ? undefined\n      : {\n          desc: order.desc,\n          field:\n            order.field === 'created_at'\n              ? {CreatedAt: null}\n              : order.field === 'updated_at'\n                ? {UpdatedAt: null}\n                : {Keys: null}\n        }\n  ),\n  owner: toNullable(\n    isNullish(owner) ? undefined : typeof owner === 'string' ? Principal.fromText(owner) : owner\n  )\n});\n", "export class SignInError extends Error {}\nexport class SignInInitError extends Error {}\nexport class SignInUserInterruptError extends Error {}\nexport class SignInProviderNotSupportedError extends Error {}\nexport class SignInMissingClientIdError extends Error {}\n\nexport class WebAuthnSignInRetrievePublicKeyError extends Error {}\n\nexport class SignUpProviderNotSupportedError extends Error {}\n\nexport class InitError extends Error {}\n\nexport class ListError extends Error {}\n", "import type {SatelliteDid} from '@junobuild/ic-client/actor';\nimport {fromArray} from '@junobuild/utils';\n\nexport const mapData = async <D>({data}: Pick<SatelliteDid.Doc, 'data'>): Promise<D> => {\n  try {\n    return await fromArray<D>(data);\n  } catch (err: unknown) {\n    console.error('The data parsing has failed, mapping to undefined as a fallback.', err);\n    return undefined as D;\n  }\n};\n", "import type {SatelliteDid} from '@junobuild/ic-client/actor';\nimport {fromArray, fromNullable, toArray, toNullable} from '@junobuild/utils';\nimport type {ExcludeDate} from '../../core/types/utility';\nimport type {Doc} from '../types/doc';\n\nexport const toSetDoc = async <D>(doc: Doc<D>): Promise<SatelliteDid.SetDoc> => {\n  const {data, version, description} = doc;\n\n  return {\n    description: toNullable(description),\n    data: await toArray<ExcludeDate<D>>(data),\n    version: toNullable(version)\n  };\n};\n\nexport const toDelDoc = <D>(doc: Doc<D>): SatelliteDid.DelDoc => {\n  const {version} = doc;\n\n  return {\n    version: toNullable(version)\n  };\n};\n\nexport const fromDoc = async <D>({\n  doc,\n  key\n}: {\n  doc: SatelliteDid.Doc;\n  key: string;\n}): Promise<Doc<D>> => {\n  const {owner, version, description: docDescription, data, ...rest} = doc;\n\n  return {\n    key,\n    description: fromNullable(docDescription),\n    owner: owner.toText(),\n    data: await fromArray<ExcludeDate<D>>(data),\n    version: fromNullable(version),\n    ...rest\n  };\n};\n", "import {DEFAULT_READ_OPTIONS} from '../../core/constants/call-options.constants';\nimport {getAnyIdentity} from '../../core/services/any-identity.services';\nimport type {ReadOptions} from '../../core/types/call-options';\nimport type {ListParams, ListResults} from '../../core/types/list';\nimport type {SatelliteOptions} from '../../core/types/satellite';\nimport {\n  countDocs as countDocsApi,\n  deleteDoc as deleteDocApi,\n  deleteFilteredDocs as deleteFilteredDocsApi,\n  deleteManyDocs as deleteManyDocsApi,\n  getDoc as getDocApi,\n  getManyDocs as getManyDocsApi,\n  listDocs as listDocsApi,\n  setDoc as setDocApi,\n  setManyDocs as setManyDocsApi\n} from '../api/doc.api';\nimport type {Doc} from '../types/doc';\n\n/**\n * Retrieves a single document from a collection.\n *\n * @template D\n * @param {Object} params - The parameters for retrieving the document.\n * @param {string} params.collection - The name of the collection.\n * @param {string} params.key - The key of the document to retrieve.\n * @param {ReadOptions} [params.options] - Call options controlling certification. Defaults to uncertified reads for performance unless specified.\n * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.\n * @returns {Promise<Doc<D> | undefined>} A promise that resolves to the document or undefined if not found.\n */\nexport const getDoc = async <D>({\n  satellite,\n  options,\n  ...rest\n}: {\n  collection: string;\n  satellite?: SatelliteOptions;\n  options?: ReadOptions;\n} & Pick<Doc<D>, 'key'>): Promise<Doc<D> | undefined> => {\n  const identity = getAnyIdentity(satellite?.identity);\n\n  return await getDocApi({\n    ...rest,\n    satellite: {...satellite, identity},\n    options: options ?? DEFAULT_READ_OPTIONS\n  });\n};\n\n/**\n * Retrieves multiple documents from a single or different collections in a single call.\n *\n * @param {Object} params - The parameters for retrieving the documents.\n * @param {Array} params.docs - The list of documents with their collections and keys.\n * @param {ReadOptions} [params.options] - Call options controlling certification. Defaults to uncertified reads for performance unless specified.\n * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.\n * @returns {Promise<Array<Doc<any> | undefined>>} A promise that resolves to an array of documents or undefined if not found.\n */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const getManyDocs = async ({\n  satellite,\n  options,\n  ...rest\n}: {\n  docs: ({collection: string} & Pick<Doc<any>, 'key'>)[];\n  satellite?: SatelliteOptions;\n  options?: ReadOptions;\n}): Promise<(Doc<any> | undefined)[]> => {\n  const identity = getAnyIdentity(satellite?.identity);\n\n  return await getManyDocsApi({\n    ...rest,\n    satellite: {...satellite, identity},\n    options: options ?? DEFAULT_READ_OPTIONS\n  });\n};\n/* eslint-enable */\n\n/**\n * Adds or updates a single document in a collection.\n *\n * @template D\n * @param {Object} params - The parameters for adding or updating the document.\n * @param {string} params.collection - The name of the collection.\n * @param {Doc<D>} params.doc - The document to add or update.\n * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.\n * @returns {Promise<Doc<D>>} A promise that resolves to the added or updated document.\n */\nexport const setDoc = async <D>({\n  satellite,\n  ...rest\n}: {\n  collection: string;\n  doc: Doc<D>;\n  satellite?: SatelliteOptions;\n}): Promise<Doc<D>> => {\n  const identity = getAnyIdentity(satellite?.identity);\n\n  return await setDocApi({\n    ...rest,\n    satellite: {...satellite, identity},\n    options: {certified: true}\n  });\n};\n\n/**\n * Adds or updates multiple documents in a or different collections.\n *\n * @param {Object} params - The parameters for adding or updating the documents.\n * @param {Array} params.docs - The list of documents with their collections and data.\n * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.\n * @returns {Promise<Array<Doc<any>>>} A promise that resolves to an array of added or updated documents.\n */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const setManyDocs = async ({\n  satellite,\n  ...rest\n}: {\n  docs: {collection: string; doc: Doc<any>}[];\n  satellite?: SatelliteOptions;\n}): Promise<Doc<any>[]> => {\n  const identity = getAnyIdentity(satellite?.identity);\n\n  return await setManyDocsApi({\n    ...rest,\n    satellite: {...satellite, identity},\n    options: {certified: true}\n  });\n};\n/* eslint-enable */\n\n/**\n * Deletes a single document from a collection.\n *\n * @template D\n * @param {Object} params - The parameters for deleting the document.\n * @param {string} params.collection - The name of the collection.\n * @param {Doc<D>} params.doc - The document to delete.\n * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.\n * @returns {Promise<void>} A promise that resolves when the document is deleted.\n */\nexport const deleteDoc = async <D>({\n  satellite,\n  ...rest\n}: {\n  collection: string;\n  doc: Doc<D>;\n  satellite?: SatelliteOptions;\n}): Promise<void> => {\n  const identity = getAnyIdentity(satellite?.identity);\n\n  return await deleteDocApi({\n    ...rest,\n    satellite: {...satellite, identity},\n    options: {certified: true}\n  });\n};\n\n/**\n * Deletes multiple documents from a or different collections.\n *\n * @param {Object} params - The parameters for deleting the documents.\n * @param {Array} params.docs - The list of documents with their collections and data.\n * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.\n * @returns {Promise<void>} A promise that resolves when the documents are deleted.\n */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const deleteManyDocs = async ({\n  satellite,\n  ...rest\n}: {\n  docs: {collection: string; doc: Doc<any>}[];\n  satellite?: SatelliteOptions;\n}): Promise<void> => {\n  const identity = getAnyIdentity(satellite?.identity);\n\n  return await deleteManyDocsApi({\n    ...rest,\n    satellite: {...satellite, identity},\n    options: {certified: true}\n  });\n};\n/* eslint-enable */\n\n/**\n * Deletes documents from a collection with optional filtering.\n *\n * @param {Object} params - The parameters for deleting documents.\n * @param {string} params.collection - The name of the collection.\n * @param {ListParams} [params.filter] - The filter criteria to match documents for deletion.\n * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.\n * @returns {Promise<void>} A promise that resolves when the documents are deleted.\n */\nexport const deleteFilteredDocs = async ({\n  satellite,\n  filter,\n  ...rest\n}: {\n  collection: string;\n  filter?: ListParams;\n  satellite?: SatelliteOptions;\n}): Promise<void> => {\n  const identity = getAnyIdentity(satellite?.identity);\n\n  return await deleteFilteredDocsApi({\n    ...rest,\n    filter: filter ?? {},\n    satellite: {...satellite, identity},\n    options: {certified: true}\n  });\n};\n\n/**\n * Lists documents in a collection with optional filtering.\n *\n * @template D\n * @param {Object} params - The parameters for listing the documents.\n * @param {string} params.collection - The name of the collection.\n * @param {ListParams} [params.filter] - Optional filter parameters.\n * @param {ReadOptions} [params.options] - Call options controlling certification. Defaults to uncertified reads for performance unless specified.\n * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.\n * @returns {Promise<ListResults<Doc<D>>>} A promise that resolves to the list of documents.\n */\nexport const listDocs = async <D>({\n  satellite,\n  options,\n  filter,\n  ...rest\n}: {\n  collection: string;\n  filter?: ListParams;\n  satellite?: SatelliteOptions;\n  options?: ReadOptions;\n}): Promise<ListResults<Doc<D>>> => {\n  const identity = getAnyIdentity(satellite?.identity);\n\n  return await listDocsApi<D>({\n    ...rest,\n    filter: filter ?? {},\n    satellite: {...satellite, identity},\n    options: options ?? DEFAULT_READ_OPTIONS\n  });\n};\n\n/**\n * Counts documents in a collection with optional filtering.\n *\n * @param {Object} params - The parameters for counting the documents.\n * @param {string} params.collection - The name of the collection.\n * @param {ListParams} [params.filter] - Optional filter parameters.\n * @param {ReadOptions} [params.options] - Call options controlling certification. Defaults to uncertified reads for performance unless specified.\n * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.\n * @returns {Promise<bigint>} A promise that resolves to the count of documents as a bigint.\n */\nexport const countDocs = async ({\n  satellite,\n  options,\n  filter,\n  ...rest\n}: {\n  collection: string;\n  filter?: ListParams;\n  satellite?: SatelliteOptions;\n  options?: ReadOptions;\n}): Promise<bigint> => {\n  const identity = getAnyIdentity(satellite?.identity);\n\n  return await countDocsApi({\n    ...rest,\n    filter: filter ?? {},\n    satellite: {...satellite, identity},\n    options: options ?? DEFAULT_READ_OPTIONS\n  });\n};\n", "import {AuthStore} from '../stores/auth.store';\nimport type {User} from '../types/user';\nimport {authenticateWithAuthClient, authenticateWithNewAuthClient} from './_auth-client.services';\nimport {loadUser} from './_user.services';\n\n/**\n * Initialize the authClient and load the existing user.\n * Executed when the library is initialized through initSatellite.\n *\n * @param {Object} params\n * @param {boolean} params.syncTabsOnSuccess - Broadcast the successful authentication to other tabs.\n */\nexport const loadAuth = async (\n  {syncTabsOnSuccess}: {syncTabsOnSuccess: boolean} = {syncTabsOnSuccess: false}\n) => {\n  const init = async () => {\n    const {user} = await loadUser();\n    AuthStore.getInstance().set(user ?? null);\n  };\n\n  await authenticateWithAuthClient({fn: init, syncTabsOnSuccess});\n};\n\n/**\n * Reloads the authentication state. Used when login success are being broadcasted.\n *\n * - Always creates a new `AuthClient` using {@link authenticateWithNewAuthClient}.\n * - If not authenticated, clears the current user from the {@link AuthStore}.\n * - If authenticated, reloads the user from storage and updates {@link AuthStore}.\n *\n * @returns {Promise<void>} Resolves when authentication and user state reloading is complete.\n */\nexport const reloadAuth = async () => {\n  const init = async ({authenticated}: {authenticated: boolean}) => {\n    const resetUser = (): Promise<{user: null}> => Promise.resolve({user: null});\n    const fn = authenticated ? loadUser : resetUser;\n    const {user} = await fn();\n\n    AuthStore.getInstance().set(user ?? null);\n  };\n\n  await authenticateWithNewAuthClient({fn: init});\n};\n\n/**\n * Initialize the authClient, load the user passed as parameter.\n * Executed on sign-up.\n */\nexport const loadAuthWithUser = async ({user}: {user: User}) => {\n  // eslint-disable-next-line require-await\n  const init = async () => {\n    AuthStore.getInstance().set(user);\n  };\n\n  await authenticateWithAuthClient({fn: init, syncTabsOnSuccess: true});\n};\n", "import type {Unsubscribe} from '../../core/types/subscription';\nimport {AuthBroadcastChannel} from '../providers/_auth-broadcast.providers';\nimport {emit} from '../utils/events.utils';\nimport {reloadAuth} from './load.services';\n\nexport const initAuthBroadcastListener = (): Unsubscribe | undefined => {\n  try {\n    const bc = AuthBroadcastChannel.getInstance();\n\n    const onLogin = async () => {\n      await reloadAuth();\n      emit({message: 'junoSignInReload'});\n    };\n\n    bc.onLoginSuccess(onLogin);\n\n    return () => {\n      bc?.destroy();\n    };\n  } catch (err: unknown) {\n    // We don't really care if the broadcast channel fails to open or if it fails to set the message handler.\n    // This is a non-critical feature that improves the UX when Juno is open in multiple tabs.\n    // We just print a warning in the console for debugging purposes.\n    console.warn('Auth BroadcastChannel initialization failed', err);\n    return undefined;\n  }\n};\n", "// TODO: duplicated because those should not be bundled in web worker. We can avoid this by transforming utils into a library of modules.\ninterface ImportMeta {\n  env: Record<string, string> | undefined;\n}\n\nexport const envSatelliteId = (): string | undefined => {\n  const viteEnvSatelliteId = (): string | undefined =>\n    typeof import.meta !== 'undefined' &&\n    typeof (import.meta as unknown as ImportMeta).env !== 'undefined'\n      ? ((import.meta as unknown as ImportMeta).env?.VITE_SATELLITE_ID ??\n        (import.meta as unknown as ImportMeta).env?.PUBLIC_SATELLITE_ID)\n      : undefined;\n\n  return typeof process !== 'undefined' && typeof process.env !== 'undefined'\n    ? (process.env.NEXT_PUBLIC_SATELLITE_ID ?? viteEnvSatelliteId())\n    : viteEnvSatelliteId();\n};\n\nexport const envContainer = (): string | undefined => {\n  const viteEnvContainer = (): string | undefined =>\n    typeof import.meta !== 'undefined' &&\n    typeof (import.meta as unknown as ImportMeta).env !== 'undefined'\n      ? ((import.meta as unknown as ImportMeta).env?.VITE_CONTAINER ??\n        (import.meta as unknown as ImportMeta).env?.PUBLIC_CONTAINER)\n      : undefined;\n\n  return typeof process !== 'undefined' && typeof process.env !== 'undefined'\n    ? (process.env.NEXT_PUBLIC_CONTAINER ?? viteEnvContainer())\n    : viteEnvContainer();\n};\n\nexport const envGoogleClientId = (): string | undefined => {\n  const viteEnvGoogleClientId = (): string | undefined =>\n    typeof import.meta !== 'undefined' &&\n    typeof (import.meta as unknown as ImportMeta).env !== 'undefined'\n      ? ((import.meta as unknown as ImportMeta).env?.VITE_GOOGLE_CLIENT_ID ??\n        (import.meta as unknown as ImportMeta).env?.PUBLIC_GOOGLE_CLIENT_ID)\n      : undefined;\n\n  return typeof process !== 'undefined' && typeof process.env !== 'undefined'\n    ? (process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID ?? viteEnvGoogleClientId())\n    : viteEnvGoogleClientId();\n};\n\nexport const envGitHubClientId = (): string | undefined => {\n  const viteEnvGitHubClientId = (): string | undefined =>\n    typeof import.meta !== 'undefined' &&\n    typeof (import.meta as unknown as ImportMeta).env !== 'undefined'\n      ? ((import.meta as unknown as ImportMeta).env?.VITE_GITHUB_CLIENT_ID ??\n        (import.meta as unknown as ImportMeta).env?.PUBLIC_GITHUB_CLIENT_ID)\n      : undefined;\n\n  return typeof process !== 'undefined' && typeof process.env !== 'undefined'\n    ? (process.env.NEXT_PUBLIC_GITHUB_CLIENT_ID ?? viteEnvGitHubClientId())\n    : viteEnvGitHubClientId();\n};\n\nexport const envApiUrl = (): string | undefined => {\n  const viteEnvApiUrl = (): string | undefined =>\n    typeof import.meta !== 'undefined' &&\n    typeof (import.meta as unknown as ImportMeta).env !== 'undefined'\n      ? ((import.meta as unknown as ImportMeta).env?.VITE_JUNO_API_URL ??\n        (import.meta as unknown as ImportMeta).env?.PUBLIC_JUNO_API_URL)\n      : undefined;\n\n  return typeof process !== 'undefined' && typeof process.env !== 'undefined'\n    ? (process.env.NEXT_PUBLIC_JUNO_API_URL ?? viteEnvApiUrl())\n    : viteEnvApiUrl();\n};\n", "import {isEmptyString, isNullish, nonNullish} from '@junobuild/utils';\nimport {\n  DOCKER_CONTAINER_URL,\n  DOCKER_INTERNET_IDENTITY_ID\n} from '../../core/constants/container.constants';\nimport {EnvStore} from '../../core/stores/env.store';\nimport {\n  IC0_APP,\n  ID_AI,\n  II_DESIGN_V1_POPUP,\n  II_DESIGN_V2_POPUP,\n  INTERNET_COMPUTER_ORG\n} from '../constants/auth.constants';\nimport type {AuthClientSignInOptions} from '../types/auth-client';\nimport type {InternetIdentityConfig, InternetIdentityDomain} from '../types/internet-identity';\nimport type {ProviderWithoutData} from '../types/provider';\nimport {popupCenter} from '../utils/window.utils';\nimport {AuthClientProvider, type AuthProviderSignInOptions} from './_auth-client.providers';\n\n/**\n * Internet Identity authentication provider.\n * @class InternetIdentityProvider\n */\nexport class InternetIdentityProvider extends AuthClientProvider {\n  #domain?: InternetIdentityDomain;\n\n  /**\n   * Creates an instance of InternetIdentityProvider.\n   * @param {InternetIdentityConfig} config - The configuration for Internet Identity.\n   */\n  constructor({domain}: InternetIdentityConfig) {\n    super();\n\n    this.#domain = domain;\n  }\n\n  /**\n   * Gets the identifier of the provider.\n   * @returns {Provider} The identifier of the provider - `internet_identity`.\n   */\n  override get id(): ProviderWithoutData {\n    return 'internet_identity';\n  }\n\n  /**\n   * Gets the sign-in options for Internet Identity.\n   * @param {Pick<SignInOptions, 'windowed'>} options - The sign-in options.\n   * @returns {AuthProviderSignInOptions} The sign-in options for Internet Identity.\n   */\n  override signInOptions({\n    windowed\n  }: Pick<AuthClientSignInOptions, 'windowed'>): AuthProviderSignInOptions {\n    const identityProviderUrl = (): string => {\n      const container = EnvStore.getInstance().get()?.container;\n\n      // Production\n      if (isNullish(container) || container === false) {\n        const identityV1Domain = [INTERNET_COMPUTER_ORG, IC0_APP].includes(this.#domain ?? ID_AI);\n\n        if (isEmptyString(this.#domain)) {\n          return `https://${ID_AI}`;\n        }\n\n        if (identityV1Domain) {\n          return `https://identity.${this.#domain ?? INTERNET_COMPUTER_ORG}`;\n        }\n\n        return `https://${this.#domain}`;\n      }\n\n      const env = EnvStore.getInstance().get();\n\n      const internetIdentityId =\n        nonNullish(env) && nonNullish(env?.internetIdentityId)\n          ? env.internetIdentityId\n          : DOCKER_INTERNET_IDENTITY_ID;\n\n      const {host: containerHost, protocol} = new URL(\n        container === true ? DOCKER_CONTAINER_URL : container\n      );\n\n      return /apple/i.test(navigator?.vendor)\n        ? `${protocol}//${containerHost}?canisterId=${internetIdentityId}`\n        : `${protocol}//${internetIdentityId}.${containerHost.replace('127.0.0.1', 'localhost')}`;\n    };\n\n    const identityProvider = identityProviderUrl();\n\n    const iiDesignV2 = (): boolean => {\n      try {\n        const {hostname} = new URL(identityProvider);\n        return hostname.includes(ID_AI);\n      } catch {\n        return false;\n      }\n    };\n\n    return {\n      ...(windowed !== false && {\n        windowOpenerFeatures: popupCenter(iiDesignV2() ? II_DESIGN_V2_POPUP : II_DESIGN_V1_POPUP)\n      }),\n      identityProvider\n    };\n  }\n}\n", "// How long the delegation identity should remain valid?\n// e.g. BigInt(7 * 24 * 60 * 60 * 1000 * 1000 * 1000) = 7 days in nanoseconds\n// For Juno: 4 hours\nexport const DELEGATION_IDENTITY_EXPIRATION_IN_MILLISECONDS = 4 * 60 * 60 * 1000;\nexport const DELEGATION_IDENTITY_EXPIRATION = BigInt(\n  DELEGATION_IDENTITY_EXPIRATION_IN_MILLISECONDS * 1000 * 1000\n);\n\n// We consider PIN authentication as \"insecure\" because users can easily lose their PIN if they do not register a passphrase, especially since Safari clears the browser cache every two weeks in cases of inactivity.\n// That's why we disable it by default.\nexport const ALLOW_PIN_AUTHENTICATION = false;\n\ninterface PopupSize {\n  width: number;\n  height: number;\n}\n\nexport const II_DESIGN_V1_POPUP: PopupSize = {width: 576, height: 576};\nexport const II_DESIGN_V2_POPUP: PopupSize = {width: 424, height: 576};\n\nexport const INTERNET_COMPUTER_ORG = 'internetcomputer.org';\nexport const IC0_APP = 'ic0.app';\nexport const ID_AI = 'id.ai';\n\n// Worker\nexport const AUTH_TIMER_INTERVAL = 1000;\n", "import {isBrowser, isNullish} from '@junobuild/utils';\n\nexport const popupCenter = ({\n  width,\n  height\n}: {\n  width: number;\n  height: number;\n}): string | undefined => {\n  if (!isBrowser()) {\n    return undefined;\n  }\n\n  if (isNullish(window) || isNullish(window.top)) {\n    return undefined;\n  }\n\n  const {\n    top: {innerWidth, innerHeight}\n  } = window;\n\n  const y = innerHeight / 2 + screenY - height / 2;\n  const x = innerWidth / 2 + screenX - width / 2;\n\n  return `toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=no, width=${width}, height=${height}, top=${y}, left=${x}`;\n};\n", "import {type AuthClient, ERROR_USER_INTERRUPT} from '@icp-sdk/auth/client';\nimport {isNullish} from '@junobuild/utils';\nimport {\n  ALLOW_PIN_AUTHENTICATION,\n  DELEGATION_IDENTITY_EXPIRATION\n} from '../constants/auth.constants';\nimport {execute} from '../helpers/progress.helpers';\nimport {type AuthClientSignInOptions, AuthClientSignInProgressStep} from '../types/auth-client';\nimport {SignInError, SignInInitError, SignInUserInterruptError} from '../types/errors';\nimport type {ProviderWithoutData} from '../types/provider';\n\n/**\n * Options for signing in with an authentication provider.\n * @interface AuthProviderSignInOptions\n */\nexport interface AuthProviderSignInOptions {\n  /**\n   * The URL of the identity provider - commonly Internet Identity.\n   */\n  identityProvider: string;\n  /**\n   * Optional features for the window opener.\n   */\n  windowOpenerFeatures?: string;\n}\n\n/**\n * Abstract base class for all authentication providers that integrate with the `@icp-sdk/auth/client`.\n *\n * @abstract\n * @class AuthClientProvider\n */\nexport abstract class AuthClientProvider {\n  /**\n   * The unique identifier of the provider.\n   *\n   * @abstract\n   * @type {Provider}\n   */\n  abstract get id(): ProviderWithoutData;\n\n  /**\n   * Returns the sign-in options for the provider.\n   *\n   * Note: set as public instead of protected for testing purposes.\n   *\n   * @abstract\n   * @param {Pick<SignInOptions, 'windowed'>} options - Options controlling window behavior.\n   * @returns {AuthProviderSignInOptions} Provider-specific sign-in options.\n   */\n  abstract signInOptions(\n    options: Pick<AuthClientSignInOptions, 'windowed'>\n  ): AuthProviderSignInOptions;\n\n  /**\n   * Signs in a user with the given authentication provider.\n   *\n   * @param {Object} params - The sign-in parameters.\n   * @param {AuthClientSignInOptions} [params.options] - Optional configuration for the login request.\n   * @param {AuthClient | undefined | null} params.authClient - The AuthClient instance in its current state.\n   * @param {initAuth} params.initAuth - The function to load or initialize the user. Provided as a callback to avoid recursive import.\n   *\n   * @returns {Promise<void>} Resolves if the sign-in is successful. Rejects with:\n   * - {@link SignInInitError} if no AuthClient is available.\n   * - {@link SignInUserInterruptError} if the user cancels the login.\n   * - {@link SignInError} for other errors during sign-in.\n   */\n  async signIn({\n    options,\n    authClient,\n    initAuth\n  }: {\n    options?: AuthClientSignInOptions;\n    authClient: AuthClient | undefined | null;\n    initAuth: (params: {provider: ProviderWithoutData}) => Promise<void>;\n  }): Promise<void> {\n    // 1. Sign-in or sign-up with third party provider\n    const login = async () => await this.#loginWithAuthClient({options, authClient});\n\n    await execute({\n      fn: login,\n      step: AuthClientSignInProgressStep.AuthorizingWithProvider,\n      onProgress: options?.onProgress\n    });\n\n    // 2. Create or load the user for the authentication\n    const runAuth = async () => await initAuth({provider: this.id});\n\n    await execute({\n      fn: runAuth,\n      step: AuthClientSignInProgressStep.CreatingOrRetrievingUser,\n      onProgress: options?.onProgress\n    });\n  }\n\n  #loginWithAuthClient({\n    options,\n    authClient\n  }: {\n    options?: Omit<AuthClientSignInOptions, 'onProgress'>;\n    authClient: AuthClient | undefined | null;\n  }): Promise<void> {\n    /* eslint-disable no-async-promise-executor */\n    return new Promise<void>(async (resolve, reject) => {\n      if (isNullish(authClient)) {\n        reject(\n          new SignInInitError(\n            'No client is ready to perform a sign-in. Have you initialized the Satellite?'\n          )\n        );\n        return;\n      }\n\n      await authClient.login({\n        onSuccess: resolve,\n        onError: (error?: string) => {\n          if (error === ERROR_USER_INTERRUPT) {\n            reject(new SignInUserInterruptError(error));\n            return;\n          }\n\n          reject(new SignInError(error));\n        },\n        maxTimeToLive: options?.maxTimeToLiveInNanoseconds ?? DELEGATION_IDENTITY_EXPIRATION,\n        allowPinAuthentication: options?.allowPin ?? ALLOW_PIN_AUTHENTICATION,\n        ...(options?.derivationOrigin !== undefined && {\n          derivationOrigin: options.derivationOrigin\n        }),\n        ...this.signInOptions({\n          windowed: options?.windowed\n        })\n      });\n    });\n  }\n}\n", "import type {SignProgressFn} from '../types/progress';\n\nexport const execute = async <T, Step>({\n  fn,\n  step,\n  onProgress\n}: {\n  fn: () => Promise<T>;\n  step: Step;\n  onProgress?: SignProgressFn<Step>;\n}): Promise<T> => {\n  onProgress?.({\n    step,\n    state: 'in_progress'\n  });\n\n  try {\n    const result = await fn();\n\n    onProgress?.({\n      step,\n      state: 'success'\n    });\n\n    return result;\n  } catch (err: unknown) {\n    onProgress?.({\n      step,\n      state: 'error'\n    });\n\n    throw err;\n  }\n};\n", "import type {SignProgressFn} from './progress';\n\n/**\n * Enum representing the different steps of the sign-in flow with Internet Identity or NFID.\n */\nexport enum AuthClientSignInProgressStep {\n  /** User is authenticating with the identity provider (II / NFID). */\n  AuthorizingWithProvider,\n  /** App is creating a new user or retrieving an existing one after authorization. */\n  CreatingOrRetrievingUser\n}\n\n/**\n * Interface representing sign-in options when using an AuthClient based provider.\n * @interface AuthClientSignInOptions\n */\nexport interface AuthClientSignInOptions {\n  /**\n   * Maximum time to live for the session in nanoseconds. Cannot be extended.\n   * @type {bigint}\n   */\n  maxTimeToLiveInNanoseconds?: bigint;\n\n  /**\n   * Origin for derivation. Useful when sign-in using the same domain - e.g. sign-in on www.hello.com for hello.com.\n   * @type {(string | URL)}\n   */\n  derivationOrigin?: string | URL;\n\n  /**\n   * Whether to open the sign-in window.\n   * @default true\n   * @type {boolean}\n   */\n  windowed?: boolean;\n\n  /**\n   * Whether to allow the infamous PIN authentication.\n   * @default false\n   * @type {boolean}\n   */\n  allowPin?: boolean;\n\n  /**\n   * Optional callback to receive progress updates about the sign-in flow.\n   * Useful for showing UI feedback such as loading indicators or status messages.\n   */\n  onProgress?: SignProgressFn<AuthClientSignInProgressStep>;\n}\n", "import type {Ed25519KeyIdentity} from '@icp-sdk/core/identity';\nimport {arrayBufferToUint8Array} from '@junobuild/utils';\nimport type {Nonce, Salt} from '../types/nonce';\nimport {toBase64URL} from './url.utils';\n\nconst generateSalt = (): Salt => crypto.getRandomValues(new Uint8Array(32));\n\nconst buildNonce = async ({salt, caller}: {salt: Salt; caller: Ed25519KeyIdentity}) => {\n  const principal = caller.getPrincipal().toUint8Array();\n\n  const bytes = new Uint8Array(salt.length + principal.byteLength);\n  bytes.set(salt);\n  bytes.set(principal, salt.length);\n\n  const hash = await crypto.subtle.digest('SHA-256', bytes);\n\n  return toBase64URL(arrayBufferToUint8Array(hash));\n};\n\nexport const generateNonce = async ({\n  caller\n}: {\n  caller: Ed25519KeyIdentity;\n}): Promise<{nonce: Nonce; salt: Salt}> => {\n  const salt = generateSalt();\n  const nonce = await buildNonce({salt, caller});\n\n  return {nonce, salt};\n};\n", "import {uint8ArrayToBase64} from '@junobuild/utils';\n\n// In the future: uint8Array.toBase64({ alphabet: \"base64url\" })\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array/toBase64\nexport const toBase64URL = (uint8Array: Uint8Array): string =>\n  uint8ArrayToBase64(uint8Array).replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/, '');\n", "import type {OpenIdGitHubProvider} from './providers/github/types/provider';\nimport type {OpenIdProvider} from './types/provider';\n\nexport const CONTEXT_KEY = 'juno:auth:openid';\n\n// Create client_id: https://developers.google.com/identity/openid-connect/openid-connect#authenticationuriparameters\nexport const GOOGLE_PROVIDER: Omit<OpenIdProvider, 'clientId' | 'redirectUrl'> = {\n  authUrl: 'https://accounts.google.com/o/oauth2/v2/auth',\n  authScopes: ['openid', 'profile', 'email'],\n  configUrl: 'https://accounts.google.com/gsi/fedcm.json'\n};\n\nexport const GITHUB_PROVIDER: Omit<OpenIdGitHubProvider, 'clientId' | 'redirectUrl'> = {\n  authUrl: 'https://github.com/login/oauth/authorize',\n  authScopes: ['read:user', 'user:email'],\n  initUrl: 'https://api.juno.build/v1/auth/init/github',\n  finalizeUrl: 'https://api.juno.build/v1/auth/finalize/github'\n};\n", "import {Ed25519KeyIdentity} from '@icp-sdk/core/identity';\nimport {isNullish} from '@junobuild/utils';\nimport type {Nonce} from '../types/nonce';\nimport {generateNonce} from '../utils/nonce.utils';\nimport {CONTEXT_KEY} from './_constants';\nimport {ContextUndefinedError} from './errors';\nimport type {OpenIdAuthContext} from './types/context';\nimport {parseContext, stringifyContext} from './utils/session-storage.utils';\n\nexport const initContext = async ({\n  generateState\n}: {\n  generateState: (params: {nonce: Nonce}) => Promise<string>;\n}): Promise<{nonce: Nonce} & Pick<OpenIdAuthContext, 'state'>> => {\n  const caller = Ed25519KeyIdentity.generate();\n  const {nonce, salt} = await generateNonce({caller});\n\n  const state = await generateState({nonce});\n\n  const storedData = stringifyContext({\n    caller,\n    salt,\n    state\n  });\n\n  sessionStorage.setItem(CONTEXT_KEY, storedData);\n\n  return {\n    nonce,\n    state\n  };\n};\n\nexport const loadContext = (): OpenIdAuthContext => {\n  const storedContext = sessionStorage.getItem(CONTEXT_KEY);\n\n  if (isNullish(storedContext)) {\n    throw new ContextUndefinedError();\n  }\n\n  return parseContext(storedContext);\n};\n", "export class InvalidUrlError extends Error {}\nexport class ContextUndefinedError extends Error {}\n\nexport class FedCMIdentityCredentialUndefinedError extends Error {}\nexport class FedCMIdentityCredentialInvalidError extends Error {}\n\nexport class AuthenticationError extends Error {}\nexport class AuthenticationUrlHashError extends Error {}\nexport class AuthenticationInvalidStateError extends Error {}\nexport class AuthenticationUndefinedJwtError extends Error {}\n\nexport class GetDelegationError extends Error {}\nexport class GetDelegationRetryError extends Error {}\n\nexport class ApiGitHubInitError extends Error {\n  constructor(options?: ErrorOptions) {\n    super('GitHub OAuth initialization failed', options);\n  }\n}\n\nexport class ApiGitHubFinalizeError extends Error {\n  constructor(options?: ErrorOptions) {\n    super('GitHub OAuth finalization failed', options);\n  }\n}\n", "import {Ed25519KeyIdentity, type JsonnableEd25519KeyIdentity} from '@icp-sdk/core/identity';\nimport {base64ToUint8Array, uint8ArrayToBase64} from '@junobuild/utils';\nimport type {OpenIdAuthContext} from '../types/context';\n\nconst JSON_KEY_CALLER = '__caller__';\nconst JSON_KEY_SALT = '__salt__';\nconst JSON_KEY_STATE = '__state__';\n\ninterface StoredContext {\n  [JSON_KEY_CALLER]: JsonnableEd25519KeyIdentity;\n  [JSON_KEY_SALT]: string;\n  [JSON_KEY_STATE]: string;\n}\n\nexport const stringifyContext = ({caller, state, salt}: OpenIdAuthContext): string => {\n  const data: StoredContext = {\n    [JSON_KEY_CALLER]: caller.toJSON(),\n    [JSON_KEY_SALT]: uint8ArrayToBase64(salt),\n    [JSON_KEY_STATE]: state\n  };\n\n  return JSON.stringify(data);\n};\n\nexport const parseContext = (jsonData: string): OpenIdAuthContext => {\n  const {\n    [JSON_KEY_CALLER]: jsonCaller,\n    [JSON_KEY_SALT]: jsonSalt,\n    [JSON_KEY_STATE]: state\n  }: StoredContext = JSON.parse(jsonData);\n\n  return {\n    caller: Ed25519KeyIdentity.fromParsedJson(jsonCaller),\n    salt: base64ToUint8Array(jsonSalt),\n    state\n  };\n};\n", "import type {Signature} from '@icp-sdk/core/agent';\nimport {Delegation, ECDSAKeyIdentity} from '@icp-sdk/core/identity';\nimport {fromNullable} from '@junobuild/utils';\nimport {authenticate as authenticateApi, getDelegation as getDelegationApi} from './api/auth.api';\nimport {AuthenticationError, GetDelegationError, GetDelegationRetryError} from './errors';\nimport type {AuthenticationData, GetDelegationArgs, SignedDelegation} from './types/actor';\nimport type {AuthenticatedSession, AuthParameters} from './types/authenticate';\nimport type {OpenIdAuthContext} from './types/context';\nimport type {Delegations} from './types/session';\nimport {generateIdentity} from './utils/session.utils';\n\ninterface AuthContext {\n  context: Omit<OpenIdAuthContext, 'state'>;\n  auth: AuthParameters;\n}\ntype AuthenticationArgs = {jwt: string} & AuthContext;\n\nexport const authenticateSession = async <T extends AuthParameters>({\n  jwt,\n  context,\n  auth\n}: AuthenticationArgs): Promise<AuthenticatedSession<T>> => {\n  const sessionKey = await ECDSAKeyIdentity.generate({extractable: false});\n\n  const publicKey = new Uint8Array(sessionKey.getPublicKey().toDer());\n\n  const {delegations, data} = await authenticate<T>({\n    jwt,\n    publicKey,\n    context,\n    auth\n  });\n\n  const identity = generateIdentity({\n    sessionKey,\n    delegations\n  });\n\n  return {identity, data};\n};\n\nconst authenticate = async <T extends AuthParameters>({\n  jwt,\n  publicKey,\n  context: {caller, salt},\n  auth\n}: {\n  publicKey: Uint8Array;\n} & AuthenticationArgs): Promise<{delegations: Delegations; data: AuthenticationData<T>}> => {\n  const result = await authenticateApi({\n    args: {\n      OpenId: {\n        jwt,\n        session_key: publicKey,\n        salt\n      }\n    },\n    actorParams: {\n      auth,\n      identity: caller\n    }\n  });\n\n  if ('Err' in result) {\n    throw new AuthenticationError('Authentication failed', {cause: result});\n  }\n\n  const {\n    delegation: {user_key: userKey, expiration},\n    ...rest\n  } = result.Ok;\n\n  const signedDelegation = await retryGetDelegation({\n    jwt,\n    context: {caller, salt},\n    auth,\n    publicKey,\n    expiration\n  });\n\n  const {delegation, signature} = signedDelegation;\n  const {pubkey, expiration: signedExpiration, targets} = delegation;\n\n  const delegations: Delegations = [\n    userKey,\n    [\n      {\n        delegation: new Delegation(\n          Uint8Array.from(pubkey),\n          signedExpiration,\n          fromNullable(targets)\n        ),\n        signature: Uint8Array.from(signature) as unknown as Signature\n      }\n    ]\n  ];\n\n  return {delegations, data: rest as AuthenticationData<T>};\n};\n\nconst retryGetDelegation = async ({\n  jwt,\n  publicKey,\n  context: {salt, caller},\n  auth,\n  expiration,\n  maxRetries = 5\n}: {\n  publicKey: Uint8Array;\n  expiration: bigint;\n  maxRetries?: number;\n} & AuthenticationArgs): Promise<SignedDelegation> => {\n  for (let i = 0; i < maxRetries; i++) {\n    // Linear backoff\n    await new Promise((resolve) => {\n      setInterval(resolve, 1000 * i);\n    });\n\n    const args: GetDelegationArgs = {\n      OpenId: {\n        jwt,\n        session_key: publicKey,\n        salt,\n        expiration\n      }\n    };\n\n    const result = await getDelegationApi({\n      args,\n      actorParams: {\n        auth,\n        identity: caller\n      }\n    });\n\n    if ('Err' in result) {\n      const {Err} = result;\n\n      if ('NoSuchDelegation' in Err) {\n        // eslint-disable-next-line no-continue\n        continue;\n      }\n\n      if ('GetCachedJwks' in Err) {\n        // eslint-disable-next-line no-continue\n        continue;\n      }\n\n      throw new GetDelegationError('Getting delegation failed', {cause: result});\n    }\n\n    return result.Ok;\n  }\n\n  throw new GetDelegationRetryError();\n};\n", "import {\n  type ConsoleActor,\n  type SatelliteActor,\n  getConsoleActor,\n  getSatelliteActor\n} from '@junobuild/ic-client/actor';\nimport type {ActorParameters} from '../types/actor';\n\nexport const getAuthActor = ({\n  auth,\n  identity\n}: ActorParameters): Promise<ConsoleActor | SatelliteActor> =>\n  'satellite' in auth\n    ? getSatelliteActor({...auth.satellite, identity})\n    : getConsoleActor({...auth.console, identity});\n", "import type {\n  ActorParameters,\n  AuthenticationArgs,\n  AuthenticationResult,\n  GetDelegationArgs,\n  GetDelegationResult\n} from '../types/actor';\nimport {getAuthActor} from './_actor.api';\n\nexport const authenticate = async ({\n  actorParams,\n  args\n}: {\n  args: AuthenticationArgs;\n  actorParams: ActorParameters;\n}): Promise<AuthenticationResult> => {\n  const {authenticate} = await getAuthActor(actorParams);\n  return await authenticate(args);\n};\n\nexport const getDelegation = async ({\n  actorParams,\n  args\n}: {\n  args: GetDelegationArgs;\n  actorParams: ActorParameters;\n}): Promise<GetDelegationResult> => {\n  const {get_delegation} = await getAuthActor(actorParams);\n  return await get_delegation(args);\n};\n", "import {DelegationChain, DelegationIdentity, type ECDSAKeyIdentity} from '@icp-sdk/core/identity';\nimport type {AuthenticatedIdentity} from '../types/authenticate';\nimport type {Delegations} from '../types/session';\n\nexport const generateIdentity = ({\n  delegations,\n  sessionKey\n}: {\n  delegations: Delegations;\n  sessionKey: ECDSAKeyIdentity;\n}): AuthenticatedIdentity => {\n  const [userKey, signedDelegations] = delegations;\n\n  const delegationChain = DelegationChain.fromDelegations(\n    signedDelegations,\n    Uint8Array.from(userKey)\n  );\n\n  const identity = DelegationIdentity.fromDelegation(sessionKey, delegationChain);\n\n  return {identity, delegationChain, sessionKey};\n};\n", "import {isEmptyString} from '@junobuild/utils';\nimport {authenticateSession} from '../../_session';\nimport {AuthenticationUndefinedJwtError} from '../../errors';\nimport type {AuthenticatedSession, AuthParameters} from '../../types/authenticate';\nimport type {OpenIdAuthContext} from '../../types/context';\nimport {finalizeOAuth} from './_api';\nimport type {AuthenticationGitHubRedirect} from './types/authenticate';\n\nexport const authenticateGitHubWithRedirect = async <T extends AuthParameters>({\n  auth,\n  context,\n  redirect: {finalizeUrl}\n}: {\n  auth: AuthParameters;\n  context: Omit<OpenIdAuthContext, 'state'>;\n  redirect: AuthenticationGitHubRedirect;\n}): Promise<AuthenticatedSession<T>> => {\n  const {\n    location: {search}\n  } = window;\n\n  const urlParams = new URLSearchParams(search);\n  const code = urlParams.get('code');\n  const state = urlParams.get('state');\n\n  const result = await finalizeOAuth({\n    url: finalizeUrl,\n    body: {code, state}\n  });\n\n  if ('error' in result) {\n    throw result.error;\n  }\n\n  const {\n    success: {token: idToken}\n  } = result;\n\n  // id_token === jwt\n  if (isEmptyString(idToken)) {\n    throw new AuthenticationUndefinedJwtError();\n  }\n\n  return await authenticateSession({\n    jwt: idToken,\n    auth,\n    context\n  });\n};\n", "import {ApiGitHubFinalizeError, ApiGitHubInitError} from '../../errors';\n\nexport const initOAuth = async ({\n  url\n}: {\n  url: string;\n}): Promise<{success: {state: string}} | {error: unknown}> => {\n  try {\n    const result = await fetch(url, {\n      credentials: 'include'\n    });\n\n    if (!result.ok) {\n      return {error: new Error(`Failed to fetch ${url} (${result.status})`)};\n    }\n\n    const data: {state: string} = await result.json();\n    return {success: data};\n  } catch (error: unknown) {\n    return {error: new ApiGitHubInitError({cause: error})};\n  }\n};\n\nexport const finalizeOAuth = async ({\n  url,\n  body\n}: {\n  url: string;\n  body: {code: string | null; state: string | null};\n}): Promise<{success: {token: string}} | {error: unknown}> => {\n  try {\n    const result = await fetch(url, {\n      method: 'POST',\n      credentials: 'include',\n      headers: {'Content-Type': 'application/json'},\n      body: JSON.stringify(body)\n    });\n\n    if (!result.ok) {\n      return {error: new Error(`Failed to fetch ${url} (${result.status})`)};\n    }\n\n    const data: {token: string} = await result.json();\n    return {success: data};\n  } catch (error: unknown) {\n    return {error: new ApiGitHubFinalizeError({cause: error})};\n  }\n};\n", "import {isEmptyString} from '@junobuild/utils';\nimport {authenticateSession} from '../../_session';\nimport {\n  AuthenticationInvalidStateError,\n  AuthenticationUndefinedJwtError,\n  AuthenticationUrlHashError\n} from '../../errors';\nimport type {AuthenticatedSession, AuthParameters} from '../../types/authenticate';\nimport type {OpenIdAuthContext} from '../../types/context';\n\nexport const authenticateGoogleWithRedirect = async <T extends AuthParameters>({\n  auth,\n  context\n}: {\n  auth: AuthParameters;\n  context: OpenIdAuthContext;\n}): Promise<AuthenticatedSession<T>> => {\n  const {\n    location: {hash}\n  } = window;\n\n  if (isEmptyString(hash) || !hash.startsWith('#')) {\n    throw new AuthenticationUrlHashError('No hash found in the current location URL');\n  }\n\n  const params = new URLSearchParams(hash.slice(1));\n  const state = params.get('state');\n  const idToken = params.get('id_token');\n\n  const {state: savedState} = context;\n\n  if (isEmptyString(savedState) || state !== savedState) {\n    throw new AuthenticationInvalidStateError('The provided state is invalid', {cause: state});\n  }\n\n  // id_token === jwt\n  if (isEmptyString(idToken)) {\n    throw new AuthenticationUndefinedJwtError();\n  }\n\n  return await authenticateSession({\n    jwt: idToken,\n    auth,\n    context\n  });\n};\n", "import {GITHUB_PROVIDER} from './_constants';\nimport {loadContext} from './_context';\nimport {authenticateSession} from './_session';\nimport {authenticateGitHubWithRedirect} from './providers/github/authenticate';\nimport {authenticateGoogleWithRedirect} from './providers/google/authenticate';\nimport type {\n  AuthenticatedSession,\n  AuthenticationParams,\n  AuthParameters\n} from './types/authenticate';\n\nexport const authenticate = async <T extends AuthParameters>(\n  params: AuthenticationParams<T>\n): Promise<AuthenticatedSession<T>> => {\n  const context = loadContext();\n\n  if ('github' in params) {\n    const {\n      github: {redirect, auth}\n    } = params;\n\n    const {finalizeUrl} = GITHUB_PROVIDER;\n\n    return await authenticateGitHubWithRedirect<T>({\n      redirect: redirect ?? {finalizeUrl},\n      auth,\n      context\n    });\n  }\n\n  const {google} = params;\n\n  if ('credentials' in google) {\n    const {\n      credentials: {jwt},\n      auth\n    } = google;\n\n    return await authenticateSession({\n      jwt,\n      context,\n      auth\n    });\n  }\n\n  return await authenticateGoogleWithRedirect<T>({...google, context});\n};\n", "import {InvalidUrlError} from '../errors';\n\nexport const parseUrl = ({url}: {url: string}): URL => {\n  try {\n    // Use the URL constructor, for backwards compatibility with older Android/WebView.\n    return new URL(url);\n  } catch (_error: unknown) {\n    throw new InvalidUrlError('Cannot parse authURL', {cause: url});\n  }\n};\n", "import type {Nonce} from '../../../types/nonce';\nimport {parseUrl} from '../../utils/url.utils';\nimport {initOAuth} from './_api';\nimport type {OpenIdGitHubProvider} from './types/provider';\n\nexport const buildGenerateState = ({initUrl}: Pick<OpenIdGitHubProvider, 'initUrl'>) => {\n  const generateState = async ({nonce}: {nonce: Nonce}): Promise<string> => {\n    const requestUrl = parseUrl({url: initUrl});\n    requestUrl.searchParams.set('nonce', nonce);\n\n    const result = await initOAuth({url: requestUrl.toString()});\n\n    if ('error' in result) {\n      throw result.error;\n    }\n\n    const {\n      success: {state}\n    } = result;\n\n    return state;\n  };\n\n  return generateState;\n};\n", "import {parseUrl} from '../../utils/url.utils';\nimport type {RequestGitHubJwtWithRedirect} from './types/openid';\n\n// https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps#1-request-a-users-github-identity\n\nexport const requestGitHubJwtWithRedirect = ({\n  authUrl,\n  clientId,\n  authScopes,\n  state,\n  redirectUrl\n}: RequestGitHubJwtWithRedirect) => {\n  const requestUrl = parseUrl({url: authUrl});\n\n  requestUrl.searchParams.set('client_id', clientId);\n\n  const {\n    location: {origin: currentUrl}\n  } = window;\n\n  requestUrl.searchParams.set('redirect_uri', redirectUrl ?? currentUrl);\n\n  // Note: GitHub Apps ignore this parameter and use permissions from app settings instead\n  requestUrl.searchParams.set('scope', authScopes.join(' '));\n\n  // Used for security reasons. When the provider redirects to the application,\n  // the state will be compared by the proxy backend with the value it initiated.\n  requestUrl.searchParams.set('state', state);\n\n  window.location.href = requestUrl.toString();\n};\n", "import {toBase64URL} from '../../utils/url.utils';\n\nexport const generateRandomState = (): string =>\n  toBase64URL(crypto.getRandomValues(new Uint8Array(12)));\n", "import type {Nonce} from '../../../types/nonce';\nimport {generateRandomState} from '../../utils/state.utils';\n\n// eslint-disable-next-line require-await\nexport const generateGoogleState = async (_params: {nonce: Nonce}): Promise<string> =>\n  generateRandomState();\n", "import {isNullish, notEmptyString} from '@junobuild/utils';\nimport {\n  FedCMIdentityCredentialInvalidError,\n  FedCMIdentityCredentialUndefinedError\n} from '../../errors';\nimport {parseUrl} from '../../utils/url.utils';\nimport type {RequestGoogleJwtWithCredentials, RequestGoogleJwtWithRedirect} from './types/openid';\n\n/**\n * Initiates an OpenID Connect authorization request by redirecting the browser.\n *\n *  References:\n *  - OAuth 2.0 (Google): https://developers.google.com/identity/protocols/oauth2/javascript-implicit-flow\n *  - OpenID Connect: https://developers.google.com/identity/openid-connect/openid-connect\n */\nexport const requestGoogleJwtWithRedirect = ({\n  authUrl,\n  clientId,\n  nonce,\n  loginHint,\n  authScopes,\n  state,\n  redirectUrl\n}: RequestGoogleJwtWithRedirect) => {\n  const requestUrl = parseUrl({url: authUrl});\n\n  requestUrl.searchParams.set('client_id', clientId);\n\n  const {\n    location: {origin: currentUrl}\n  } = window;\n\n  requestUrl.searchParams.set('redirect_uri', redirectUrl ?? currentUrl);\n\n  // We do not request \"token\" because we use the ID token (JWT).\n  // \"code\" is required according to II's codebase as Apple ID throws an error otherwise.\n  requestUrl.searchParams.set('response_type', 'code id_token');\n\n  requestUrl.searchParams.set('scope', authScopes.join(' '));\n\n  // Used for security reasons. When the provider redirects to the application,\n  // the state will be compared with the session storage value.\n  requestUrl.searchParams.set('state', state);\n\n  // Used to validate the JSON Web Token (JWT) in the backend \u2014 i.e. we pass the nonce\n  // to the provider and make the request to the backend with its salt.\n  requestUrl.searchParams.set('nonce', nonce);\n\n  if (notEmptyString(loginHint)) {\n    requestUrl.searchParams.set('login_hint', loginHint);\n  } else {\n    requestUrl.searchParams.set('prompt', 'select_account');\n  }\n\n  window.location.href = requestUrl.toString();\n};\n\n/**\n * References:\n * - identity spec: https://www.w3.org/TR/fedcm/#browser-api-credential-request-options\n * - https://privacysandbox.google.com/cookies/fedcm/implement/identity-provider\n * - https://privacysandbox.google.com/cookies/fedcm/why\n */\nexport const requestGoogleJwtWithCredentials = async ({\n  configUrl: configURL,\n  clientId,\n  nonce,\n  loginHint,\n  domainHint\n}: RequestGoogleJwtWithCredentials): Promise<{jwt: string}> => {\n  const identityCredential = await navigator.credentials.get({\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore\n    identity: {\n      context: 'use',\n      providers: [\n        {\n          configURL,\n          clientId,\n          nonce,\n          loginHint,\n          domainHint\n        }\n      ],\n      mode: 'active'\n    },\n    // https://privacysandbox.google.com/cookies/fedcm/implement/relying-party#auto-reauthn\n    mediation: 'required'\n  });\n\n  if (isNullish(identityCredential)) {\n    throw new FedCMIdentityCredentialUndefinedError();\n  }\n\n  const {type} = identityCredential;\n\n  if (\n    type !== 'identity' ||\n    !('token' in identityCredential) ||\n    typeof identityCredential.token !== 'string'\n  ) {\n    // This should be unreachable in FedCM spec-compliant browsers.\n    throw new FedCMIdentityCredentialInvalidError('Invalid credential received from FedCM API', {\n      cause: identityCredential\n    });\n  }\n\n  const {token: jwt} = identityCredential;\n  return {jwt};\n};\n", "import {GITHUB_PROVIDER, GOOGLE_PROVIDER} from './_constants';\nimport {initContext} from './_context';\nimport {buildGenerateState} from './providers/github/_context';\nimport {requestGitHubJwtWithRedirect} from './providers/github/_openid';\nimport type {RequestGitHubJwtRedirectParams} from './providers/github/types/request';\nimport {generateGoogleState} from './providers/google/_context';\nimport {\n  requestGoogleJwtWithCredentials,\n  requestGoogleJwtWithRedirect\n} from './providers/google/_openid';\nimport type {\n  RequestGoogleJwtCredentialsParams,\n  RequestGoogleJwtParams,\n  RequestGoogleJwtRedirectParams\n} from './providers/google/types/request';\nimport type {RequestJwtCredentialsResult} from './types/request';\n\nexport function requestJwt(args: {\n  google: RequestGoogleJwtCredentialsParams;\n}): Promise<RequestJwtCredentialsResult>;\n\nexport function requestJwt(\n  args: {google: RequestGoogleJwtRedirectParams} | {github: RequestGitHubJwtRedirectParams}\n): Promise<void>;\n\nexport async function requestJwt(\n  args:\n    | {\n        google: RequestGoogleJwtParams;\n      }\n    | {github: RequestGitHubJwtRedirectParams}\n): Promise<RequestJwtCredentialsResult | void> {\n  if ('github' in args) {\n    const {github} = args;\n\n    const {redirect} = github;\n    const {initUrl: userInitUrl, ...restRedirect} = redirect;\n\n    const {authUrl, authScopes, initUrl} = GITHUB_PROVIDER;\n\n    const context = await initContext({\n      generateState: buildGenerateState({initUrl: userInitUrl ?? initUrl})\n    });\n\n    requestGitHubJwtWithRedirect({\n      ...restRedirect,\n      ...context,\n      authUrl,\n      authScopes\n    });\n    return;\n  }\n\n  const context = await initContext({generateState: generateGoogleState});\n\n  const {google} = args;\n\n  if ('credentials' in google) {\n    const {credentials} = google;\n    const {configUrl} = GOOGLE_PROVIDER;\n\n    return await requestGoogleJwtWithCredentials({\n      ...credentials,\n      ...context,\n      configUrl\n    });\n  }\n\n  const {redirect} = google;\n  const {authUrl, authScopes} = GOOGLE_PROVIDER;\n\n  requestGoogleJwtWithRedirect({\n    ...redirect,\n    ...context,\n    authUrl,\n    authScopes\n  });\n}\n", "/**\n * Detects whether the browser supports FedCM (Federated Credential Management).\n *\n * @returns {boolean} `true` if FedCM is supported, otherwise `false`.\n *\n * References:\n *  - MDN IdentityCredential: https://developer.mozilla.org/en-US/docs/Web/API/IdentityCredential\n */\nexport const isFedCMSupported = (): boolean => {\n  const {userAgent} = navigator;\n\n  // Samsung browser implements \"IdentityCredential\" but does not support \"configURL\"\n  // https://developer.mozilla.org/en-US/docs/Web/API/IdentityCredential\n  const isSamsungBrowser = /SamsungBrowser/i.test(userAgent);\n  if (isSamsungBrowser) {\n    return false;\n  }\n\n  return 'IdentityCredential' in window;\n};\n", "import {authenticate} from '@junobuild/auth/delegation';\nimport {isEmptyString, isNullish, nonNullish, notEmptyString} from '@junobuild/utils';\nimport {EnvStore} from '../../core/stores/env.store';\nimport {envApiUrl} from '../../core/utils/window.env.utils';\nimport {fromDoc} from '../../datastore/utils/doc.utils';\nimport {AuthClientStore} from '../stores/auth-client.store';\nimport type {HandleRedirectCallbackOptions} from '../types/auth';\nimport {SignInInitError} from '../types/errors';\nimport type {UserData} from '../types/user';\nimport {parseOptionalUrl} from '../utils/url.utils';\nimport {loadAuthWithUser} from './load.services';\n\nexport const handleRedirectCallback = async (options: HandleRedirectCallbackOptions) => {\n  const {satelliteId} = EnvStore.getInstance().get() ?? {satelliteId: undefined};\n\n  if (isNullish(satelliteId)) {\n    throw new SignInInitError('Satellite ID not set. Have you initialized the Satellite?');\n  }\n\n  const container = EnvStore.getInstance().get()?.container;\n\n  const auth = {\n    auth: {\n      satellite: {\n        satelliteId,\n        container\n      }\n    }\n  };\n\n  const buildFinalizeUrl = (): string | null => {\n    const finalizeUrl = 'github' in options ? options?.github?.options?.finalizeUrl : undefined;\n\n    if (notEmptyString(finalizeUrl)) {\n      return finalizeUrl;\n    }\n\n    const apiUrl = envApiUrl();\n\n    if (isEmptyString(apiUrl)) {\n      return null;\n    }\n\n    return parseOptionalUrl({url: `${apiUrl}/v1/auth/finalize/github`})?.toString() ?? null;\n  };\n\n  const finalizeUrl = buildFinalizeUrl();\n\n  const {\n    identity: {delegationChain, sessionKey, identity},\n    data: {doc}\n  } = await authenticate(\n    'github' in options\n      ? {\n          github: {\n            redirect: nonNullish(finalizeUrl) ? {finalizeUrl} : null,\n            ...auth\n          }\n        }\n      : {\n          google: {\n            redirect: null,\n            ...auth\n          }\n        }\n  );\n\n  // Set up the delegation and session key for the AuthClient\n  await AuthClientStore.getInstance().setAuthClientStorage({\n    delegationChain,\n    sessionKey\n  });\n\n  // Create the AuthClient, load the identity and set the user in store\n  const user = await fromDoc<UserData>({doc, key: identity.getPrincipal().toText()});\n  await loadAuthWithUser({user});\n};\n", "export const parseOptionalUrl = ({url}: {url: string}): URL | null => {\n  try {\n    // Use the URL constructor, for backwards compatibility with older Android/WebView.\n    return new URL(url);\n  } catch (_error: unknown) {\n    console.warn(`Cannot parse URL ${url}. Skipping option.`);\n    return null;\n  }\n};\n", "const onBeforeUnload = ($event: BeforeUnloadEvent) => {\n  $event.preventDefault();\n  return ($event.returnValue = 'Are you sure you want to exit?');\n};\n\nconst addBeforeUnload = () => {\n  window.addEventListener('beforeunload', onBeforeUnload, {capture: true});\n};\n\nconst removeBeforeUnload = () => {\n  window.removeEventListener('beforeunload', onBeforeUnload, {capture: true});\n};\n\nexport const executeWithWindowGuard = async <T>({fn}: {fn: () => Promise<T>}): Promise<T> => {\n  try {\n    addBeforeUnload();\n\n    return await fn();\n  } finally {\n    removeBeforeUnload();\n  }\n};\n", "export class UnsafeDevIdentityNotBrowserError extends Error {\n  constructor() {\n    super('A dev identity can only be used in browser environments');\n  }\n}\n\nexport class UnsafeDevIdentityNotLocalhostError extends Error {\n  constructor() {\n    super('A dev identity must only be used on localhost (127.0.0.1 or localhost)');\n  }\n}\n\nexport class UnsafeDevIdentityInvalidIdentifierError extends Error {\n  constructor(length: number) {\n    super(`Identifier must be 32 characters or less, got ${length}`);\n  }\n}\n", "import {\n  DelegationChain,\n  DelegationIdentity,\n  ECDSAKeyIdentity,\n  Ed25519KeyIdentity\n} from '@icp-sdk/core/identity';\nimport {clear, createStore, entries, update} from 'idb-keyval';\nimport {DEFAULT_DEV_DELEGATION_IDENTITY_EXPIRATION_IN_MS} from './_constants';\nimport {\n  UnsafeDevIdentityInvalidIdentifierError,\n  UnsafeDevIdentityNotBrowserError,\n  UnsafeDevIdentityNotLocalhostError\n} from './errors';\nimport type {\n  DevIdentifier,\n  DevIdentifierData,\n  GenerateUnsafeIdentityParams,\n  GenerateUnsafeIdentityResult,\n  LoadDevIdentifiersParams\n} from './types/identity';\n\nconst identifiersIdbStore = createStore('juno-dev-identifiers', 'juno-dev-identifiers-store');\n\n/**\n * Load all development identifiers that have been used for authentication.\n *\n * Returns an array of tuples containing the identifier string and metadata (created/updated timestamps),\n * sorted by most recently used first.\n *\n * @param params - Load parameters\n * @param params.limit - Optional maximum number of identifiers to return\n * @returns Promise resolving to array of [identifier, metadata] tuples sorted by updatedAt descending\n *\n * @example\n * const recent = await loadDevIdentifiers({ limit: 5 });\n * // Returns only the 5 most recently used identifiers\n */\nexport const loadDevIdentifiers = async ({limit}: LoadDevIdentifiersParams = {}): Promise<\n  [DevIdentifier, DevIdentifierData][]\n> => {\n  const identifiers = await entries<DevIdentifier, DevIdentifierData>(identifiersIdbStore);\n\n  return identifiers.sort(([_, {updatedAt: a}], [__, {updatedAt: b}]) => b - a).slice(0, limit);\n};\n\n/**\n * Clear all stored development identifiers from IndexedDB.\n * This removes the history of used identifiers but does not affect AuthClient's stored credentials.\n *\n * @returns Promise that resolves when identifiers are cleared\n */\nexport const clearDevIdentifiers = () => clear(identifiersIdbStore);\n\n/**\n * Generate an identity for local development with the Internet Computer.\n *\n * \u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\n * \u26A0\uFE0F UNSAFE - FOR LOCAL DEVELOPMENT ONLY \u26A0\uFE0F\n * \u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\n *\n * Returns the identity, session key, and delegation chain.\n * Consumers must handle storage (e.g. for AuthClient compatibility).\n *\n * @param params - Generation parameters\n * @param params.identifier - Unique identifier string for this dev identity (default: \"dev\")\n * @param params.maxTimeToLiveInMilliseconds - Delegation expiration time in ms (default: 7 days)\n *\n * @returns Promise resolving to object containing identity, sessionKey, and delegationChain\n *\n * @throws {UnsafeDevIdentityNotBrowserError} If called outside browser environment\n * @throws {UnsafeDevIdentityNotLocalhostError} If called outside localhost\n **/\nexport const generateUnsafeDevIdentity = async ({\n  identifier = 'dev',\n  maxTimeToLiveInMilliseconds\n}: GenerateUnsafeIdentityParams = {}): Promise<GenerateUnsafeIdentityResult> => {\n  const isBrowser = (): boolean => typeof window !== `undefined`;\n\n  if (!isBrowser()) {\n    throw new UnsafeDevIdentityNotBrowserError();\n  }\n\n  const {\n    location: {hostname}\n  } = window;\n\n  if (!['127.0.0.1', 'localhost'].includes(hostname)) {\n    throw new UnsafeDevIdentityNotLocalhostError();\n  }\n\n  const generateSeed = (): Uint8Array => {\n    if (identifier.length > 32) {\n      throw new UnsafeDevIdentityInvalidIdentifierError(identifier.length);\n    }\n\n    const encoder = new TextEncoder();\n    return encoder.encode(identifier.padEnd(32, '0'));\n  };\n\n  const generate = async (): Promise<GenerateUnsafeIdentityResult> => {\n    const seedBytes = generateSeed();\n\n    const rootIdentity = Ed25519KeyIdentity.generate(seedBytes);\n    const sessionKey = await ECDSAKeyIdentity.generate({\n      extractable: false\n    });\n\n    const sessionLengthInMilliseconds =\n      maxTimeToLiveInMilliseconds ?? DEFAULT_DEV_DELEGATION_IDENTITY_EXPIRATION_IN_MS;\n\n    const chain = await DelegationChain.create(\n      rootIdentity,\n      sessionKey.getPublicKey(),\n      new Date(Date.now() + sessionLengthInMilliseconds)\n    );\n\n    const delegatedIdentity = DelegationIdentity.fromDelegation(sessionKey, chain);\n\n    return {\n      identity: delegatedIdentity,\n      sessionKey,\n      delegationChain: chain\n    };\n  };\n\n  const saveIdentifierUsage = async () => {\n    await update(\n      identifier,\n      (value) => {\n        const now = Date.now();\n\n        return {\n          createdAt: value?.createdAt ?? now,\n          updatedAt: now\n        };\n      },\n      identifiersIdbStore\n    );\n  };\n\n  const result = await generate();\n\n  await saveIdentifierUsage();\n\n  return result;\n};\n", "function promisifyRequest(request) {\n    return new Promise((resolve, reject) => {\n        // @ts-ignore - file size hacks\n        request.oncomplete = request.onsuccess = () => resolve(request.result);\n        // @ts-ignore - file size hacks\n        request.onabort = request.onerror = () => reject(request.error);\n    });\n}\nfunction createStore(dbName, storeName) {\n    let dbp;\n    const getDB = () => {\n        if (dbp)\n            return dbp;\n        const request = indexedDB.open(dbName);\n        request.onupgradeneeded = () => request.result.createObjectStore(storeName);\n        dbp = promisifyRequest(request);\n        dbp.then((db) => {\n            // It seems like Safari sometimes likes to just close the connection.\n            // It's supposed to fire this event when that happens. Let's hope it does!\n            db.onclose = () => (dbp = undefined);\n        }, () => { });\n        return dbp;\n    };\n    return (txMode, callback) => getDB().then((db) => callback(db.transaction(storeName, txMode).objectStore(storeName)));\n}\nlet defaultGetStoreFunc;\nfunction defaultGetStore() {\n    if (!defaultGetStoreFunc) {\n        defaultGetStoreFunc = createStore('keyval-store', 'keyval');\n    }\n    return defaultGetStoreFunc;\n}\n/**\n * Get a value by its key.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction get(key, customStore = defaultGetStore()) {\n    return customStore('readonly', (store) => promisifyRequest(store.get(key)));\n}\n/**\n * Set a value with a key.\n *\n * @param key\n * @param value\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction set(key, value, customStore = defaultGetStore()) {\n    return customStore('readwrite', (store) => {\n        store.put(value, key);\n        return promisifyRequest(store.transaction);\n    });\n}\n/**\n * Set multiple values at once. This is faster than calling set() multiple times.\n * It's also atomic \u2013 if one of the pairs can't be added, none will be added.\n *\n * @param entries Array of entries, where each entry is an array of `[key, value]`.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction setMany(entries, customStore = defaultGetStore()) {\n    return customStore('readwrite', (store) => {\n        entries.forEach((entry) => store.put(entry[1], entry[0]));\n        return promisifyRequest(store.transaction);\n    });\n}\n/**\n * Get multiple values by their keys\n *\n * @param keys\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction getMany(keys, customStore = defaultGetStore()) {\n    return customStore('readonly', (store) => Promise.all(keys.map((key) => promisifyRequest(store.get(key)))));\n}\n/**\n * Update a value. This lets you see the old value and update it as an atomic operation.\n *\n * @param key\n * @param updater A callback that takes the old value and returns a new value.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction update(key, updater, customStore = defaultGetStore()) {\n    return customStore('readwrite', (store) => \n    // Need to create the promise manually.\n    // If I try to chain promises, the transaction closes in browsers\n    // that use a promise polyfill (IE10/11).\n    new Promise((resolve, reject) => {\n        store.get(key).onsuccess = function () {\n            try {\n                store.put(updater(this.result), key);\n                resolve(promisifyRequest(store.transaction));\n            }\n            catch (err) {\n                reject(err);\n            }\n        };\n    }));\n}\n/**\n * Delete a particular key from the store.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction del(key, customStore = defaultGetStore()) {\n    return customStore('readwrite', (store) => {\n        store.delete(key);\n        return promisifyRequest(store.transaction);\n    });\n}\n/**\n * Delete multiple keys at once.\n *\n * @param keys List of keys to delete.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction delMany(keys, customStore = defaultGetStore()) {\n    return customStore('readwrite', (store) => {\n        keys.forEach((key) => store.delete(key));\n        return promisifyRequest(store.transaction);\n    });\n}\n/**\n * Clear all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction clear(customStore = defaultGetStore()) {\n    return customStore('readwrite', (store) => {\n        store.clear();\n        return promisifyRequest(store.transaction);\n    });\n}\nfunction eachCursor(store, callback) {\n    store.openCursor().onsuccess = function () {\n        if (!this.result)\n            return;\n        callback(this.result);\n        this.result.continue();\n    };\n    return promisifyRequest(store.transaction);\n}\n/**\n * Get all keys in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction keys(customStore = defaultGetStore()) {\n    return customStore('readonly', (store) => {\n        // Fast path for modern browsers\n        if (store.getAllKeys) {\n            return promisifyRequest(store.getAllKeys());\n        }\n        const items = [];\n        return eachCursor(store, (cursor) => items.push(cursor.key)).then(() => items);\n    });\n}\n/**\n * Get all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction values(customStore = defaultGetStore()) {\n    return customStore('readonly', (store) => {\n        // Fast path for modern browsers\n        if (store.getAll) {\n            return promisifyRequest(store.getAll());\n        }\n        const items = [];\n        return eachCursor(store, (cursor) => items.push(cursor.value)).then(() => items);\n    });\n}\n/**\n * Get all entries in the store. Each entry is an array of `[key, value]`.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction entries(customStore = defaultGetStore()) {\n    return customStore('readonly', (store) => {\n        // Fast path for modern browsers\n        // (although, hopefully we'll get a simpler path some day)\n        if (store.getAll && store.getAllKeys) {\n            return Promise.all([\n                promisifyRequest(store.getAllKeys()),\n                promisifyRequest(store.getAll()),\n            ]).then(([keys, values]) => keys.map((key, i) => [key, values[i]]));\n        }\n        const items = [];\n        return customStore('readonly', (store) => eachCursor(store, (cursor) => items.push([cursor.key, cursor.value])).then(() => items));\n    });\n}\n\nexport { clear, createStore, del, delMany, entries, get, getMany, keys, promisifyRequest, set, setMany, update, values };\n", "import type {DelegationChain, ECDSAKeyIdentity} from '@icp-sdk/core/identity';\nimport {generateUnsafeDevIdentity} from '@junobuild/ic-client/dev';\nimport type {DevIdentitySignInOptions} from '../types/dev-identity';\nimport type {ProviderWithoutData} from '../types/provider';\n\n/**\n * Development identity authentication provider for local testing.\n *\n * \u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\n * \u26A0\uFE0F UNSAFE - FOR LOCAL DEVELOPMENT ONLY \u26A0\uFE0F\n * \u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\u26A0\uFE0F\n *\n * This provider generates deterministic identities for local development\n * without requiring external authentication services. Only works on localhost.\n *\n * @class DevIdentityProvider\n */\nexport class DevIdentityProvider {\n  /**\n   * Signs in a user with a development identity.\n   *\n   * @param {Object} params - The sign-in parameters.\n   * @param {DevIdentitySignInOptions} [params.options] - Optional configuration for the dev identity (identifier, TTL).\n   * @param {Function} params.initAuth - Callback to initialize or load the user after identity generation.\n   * @param {Function} params.setStorage - Callback to store the session key and delegation chain for AuthClient.\n   *\n   * @returns {Promise<void>} Resolves when sign-in is complete.\n   *\n   * @throws {UnsafeDevIdentityNotBrowserError} If called outside browser environment.\n   * @throws {UnsafeDevIdentityNotLocalhostError} If called outside localhost.\n   * @throws {UnsafeDevIdentityInvalidIdentifierError} If identifier exceeds 32 characters.\n   */\n  async signIn({\n    options,\n    initAuth,\n    setStorage\n  }: {\n    options?: DevIdentitySignInOptions;\n    initAuth: (params: {provider: ProviderWithoutData}) => Promise<void>;\n    setStorage: (params: {\n      delegationChain: DelegationChain;\n      sessionKey: ECDSAKeyIdentity;\n    }) => Promise<void>;\n  }): Promise<void> {\n    // 1. Create a local identity and save the identifier usage in IDB\n    const {sessionKey, delegationChain} = await generateUnsafeDevIdentity(options);\n\n    // 2. We save the session and delegation for use with AuthClient\n    await setStorage({sessionKey, delegationChain});\n\n    // 3. Create a new AuthClient, load or create the user\n    await initAuth({provider: undefined});\n  }\n}\n", "import {requestJwt} from '@junobuild/auth/delegation';\nimport {isEmptyString, isNullish, notEmptyString} from '@junobuild/utils';\nimport {envApiUrl, envGitHubClientId} from '../../core/utils/window.env.utils';\nimport {SignInMissingClientIdError} from '../types/errors';\nimport type {GitHubSignInRedirectOptions} from '../types/github';\nimport {parseOptionalUrl} from '../utils/url.utils';\n\nexport class GitHubProvider {\n  /**\n   * Initiates a GitHub sign-in flow.\n   *\n   * @param {Object} params - Parameters for the sign-in request.\n   * @param {GitHubSignInRedirectOptions} [params.options] - Optional configuration for the sign-in request.\n   *\n   * @returns {Promise<void>} Resolves once the sign-in flow has been initiated.\n   */\n  async signIn({options = {}}: {options?: GitHubSignInRedirectOptions}) {\n    const clientId = options?.redirect?.clientId ?? envGitHubClientId();\n\n    if (isNullish(clientId)) {\n      throw new SignInMissingClientIdError();\n    }\n\n    const {redirect} = options;\n\n    const initUrl = (): string | undefined => {\n      const initUrl = options?.redirect?.initUrl;\n\n      if (notEmptyString(initUrl)) {\n        return initUrl;\n      }\n\n      const apiUrl = envApiUrl();\n\n      if (isEmptyString(apiUrl)) {\n        return undefined;\n      }\n\n      return parseOptionalUrl({url: `${apiUrl}/v1/auth/init/github`})?.toString();\n    };\n\n    await requestJwt({\n      github: {\n        redirect: {\n          ...(redirect ?? {}),\n          clientId,\n          initUrl: initUrl()\n        }\n      }\n    });\n  }\n}\n", "import {requestJwt} from '@junobuild/auth/delegation';\nimport {isNullish} from '@junobuild/utils';\nimport {envGoogleClientId} from '../../core/utils/window.env.utils';\nimport {SignInMissingClientIdError} from '../types/errors';\nimport type {GoogleSignInRedirectOptions} from '../types/google';\n\nexport class GoogleProvider {\n  /**\n   * Initiates a Google sign-in flow.\n   *\n   * Depending on the environment or configuration, this may redirect the user\n   * to Google's authentication screen or trigger a browser-native sign-in flow\n   * (such as FedCM in the future).\n   *\n   * @param {Object} params - Parameters for the sign-in request.\n   * @param {GoogleSignInRedirectOptions} [params.options] - Optional configuration for the sign-in request.\n   *\n   * @returns {Promise<void>} Resolves once the sign-in flow has been initiated.\n   */\n  async signIn({options = {}}: {options?: GoogleSignInRedirectOptions}) {\n    const clientId = options?.redirect?.clientId ?? envGoogleClientId();\n\n    if (isNullish(clientId)) {\n      throw new SignInMissingClientIdError();\n    }\n\n    const {redirect} = options;\n\n    await requestJwt({\n      google: {\n        redirect: {\n          ...(redirect ?? {}),\n          clientId\n        }\n      }\n    });\n  }\n}\n", "import {IdbStorage, KEY_STORAGE_DELEGATION, KEY_STORAGE_KEY} from '@icp-sdk/auth/client';\nimport {type SignIdentity, AnonymousIdentity} from '@icp-sdk/core/agent';\nimport {\n  DelegationChain,\n  DelegationIdentity,\n  DER_COSE_OID,\n  ECDSAKeyIdentity,\n  unwrapDER\n} from '@icp-sdk/core/identity';\nimport {\n  type RetrievePublicKeyFn,\n  type WebAuthnNewCredential,\n  type WebAuthnSignProgressFn,\n  WebAuthnIdentity,\n  WebAuthnSignProgressStep\n} from '@junobuild/ic-client/webauthn';\nimport {isNullish, uint8ArrayToBase64} from '@junobuild/utils';\nimport {EnvStore} from '../../core/stores/env.store';\nimport {getDoc} from '../../datastore/services/doc.services';\nimport {DELEGATION_IDENTITY_EXPIRATION_IN_MILLISECONDS} from '../constants/auth.constants';\nimport {execute} from '../helpers/progress.helpers';\nimport {createWebAuthnUser} from '../services/user-webauthn.services';\nimport {SignInInitError, WebAuthnSignInRetrievePublicKeyError} from '../types/errors';\nimport type {User} from '../types/user';\nimport {\n  type WebAuthnSignInOptions,\n  type WebAuthnSignUpOptions,\n  WebAuthnSignInProgressStep,\n  WebAuthnSignUpProgressStep\n} from '../types/webauthn';\n\ninterface SessionDelegationIdentity {\n  delegationIdentity: DelegationIdentity;\n  sessionKey: ECDSAKeyIdentity;\n}\n\nexport class WebAuthnProvider {\n  /**\n   * Signs up a user by creating a new passkey.\n   *\n   * @param {Object} params - The sign-up parameters.\n   * @param {WebAuthnSignUpOptions} [params.options] - Optional configuration for the login request.\n   * @param {loadAuth} params.loadAuthWithUser - The function to load the authentication with the user. Provided as a callback to avoid recursive import.\n   *\n   * @returns {Promise<void>} Resolves if the sign-up is successful.\n   */\n  async signUp({\n    options: {onProgress, maxTimeToLiveInMilliseconds, passkey: passkeyOptions} = {},\n    loadAuthWithUser\n  }: {\n    options?: WebAuthnSignUpOptions;\n    loadAuthWithUser: (params: {user: User}) => Promise<void>;\n  }) {\n    const {satelliteId} = EnvStore.getInstance().get() ?? {satelliteId: undefined};\n\n    if (isNullish(satelliteId)) {\n      throw new SignInInitError('Satellite ID not set. Have you initialized the Satellite?');\n    }\n\n    const onSignProgress: WebAuthnSignProgressFn = ({step, state}) => {\n      switch (step) {\n        case WebAuthnSignProgressStep.RequestingUserCredential:\n          onProgress?.({\n            step: WebAuthnSignUpProgressStep.ValidatingUserCredential,\n            state\n          });\n          break;\n        case WebAuthnSignProgressStep.FinalizingCredential:\n          onProgress?.({\n            step: WebAuthnSignUpProgressStep.FinalizingCredential,\n            state\n          });\n          break;\n        case WebAuthnSignProgressStep.Signing:\n          onProgress?.({\n            step: WebAuthnSignUpProgressStep.Signing,\n            state\n          });\n          break;\n      }\n    };\n\n    // 1. Create passkey\n    const createPasskey = async (): Promise<WebAuthnIdentity<WebAuthnNewCredential>> =>\n      await WebAuthnIdentity.createWithNewCredential({\n        onProgress: onSignProgress,\n        passkeyOptions\n      });\n\n    const passkeyIdentity = await execute({\n      fn: createPasskey,\n      step: WebAuthnSignUpProgressStep.CreatingUserCredential,\n      onProgress\n    });\n\n    // 2. Create session delegation. This will require the user the sign the session using their authenticator.\n    // i.e. they will have to use their authenticator a second time after create.\n    const {delegationIdentity, sessionKey} = await this.#createSessionDelegation({\n      identity: passkeyIdentity,\n      maxTimeToLiveInMilliseconds\n    });\n\n    // 3. Make update calls to create user and save public key.\n    // Note: We create the user before saving the session identity to avoid\n    // a race condition where the user would reload the window and the lib\n    // would try to retrieve and undefined user for the delegation saved in indexeddb.\n    const register = async () =>\n      await createWebAuthnUser({\n        delegationIdentity,\n        passkeyIdentity,\n        satelliteId\n      });\n\n    const user = await execute({\n      fn: register,\n      step: WebAuthnSignUpProgressStep.RegisteringUser,\n      onProgress\n    });\n\n    // 4. Save session identity for loading it with auth client\n    const saveSession = async () =>\n      await this.#saveSessionIdentityForAuthClient({delegationIdentity, sessionKey});\n\n    await execute({\n      fn: saveSession,\n      step: WebAuthnSignUpProgressStep.FinalizingSession,\n      onProgress\n    });\n\n    // 5. Load the user for the authentication\n    const loadAuth = async () => await loadAuthWithUser({user});\n\n    await execute({\n      fn: loadAuth,\n      step: WebAuthnSignUpProgressStep.RegisteringUser,\n      onProgress\n    });\n  }\n\n  /**\n   * Signs in a user with an existing passkey.\n   *\n   * @param {Object} params - The sign-in parameters.\n   * @param {WebAuthnSignInOptions} [params.options] - Optional configuration for the login request.\n   * @param {loadAuth} params.loadAuth - The function to load the user. Provided as a callback to avoid recursive import.\n   *\n   * @returns {Promise<void>} Resolves if the sign-in is successful.\n   */\n  async signIn({\n    options: {onProgress, maxTimeToLiveInMilliseconds} = {},\n    loadAuth\n  }: {\n    options?: WebAuthnSignInOptions;\n    loadAuth: () => Promise<void>;\n  }) {\n    const {satelliteId} = EnvStore.getInstance().get() ?? {satelliteId: undefined};\n\n    if (isNullish(satelliteId)) {\n      throw new SignInInitError('Satellite ID not set. Have you initialized the Satellite?');\n    }\n\n    const retrievePublicKey: RetrievePublicKeyFn = async ({credentialId}) => {\n      const doc = await getDoc({\n        collection: '#user-webauthn',\n        key: uint8ArrayToBase64(credentialId),\n        options: {\n          certified: true\n        },\n        satellite: {\n          identity: new AnonymousIdentity(),\n          satelliteId\n        }\n      });\n\n      if (isNullish(doc)) {\n        throw new WebAuthnSignInRetrievePublicKeyError(\n          'No public key found for the selected passkey.'\n        );\n      }\n\n      const {data} = doc;\n\n      const {publicKey} = data as {publicKey: Uint8Array};\n\n      return unwrapDER(publicKey, DER_COSE_OID);\n    };\n\n    const onSignProgress: WebAuthnSignProgressFn = ({step, state}) => {\n      switch (step) {\n        case WebAuthnSignProgressStep.RequestingUserCredential:\n          onProgress?.({\n            step: WebAuthnSignInProgressStep.RequestingUserCredential,\n            state\n          });\n          break;\n        case WebAuthnSignProgressStep.FinalizingCredential:\n          onProgress?.({\n            step: WebAuthnSignInProgressStep.FinalizingCredential,\n            state\n          });\n          break;\n        case WebAuthnSignProgressStep.Signing:\n          onProgress?.({\n            step: WebAuthnSignInProgressStep.Signing,\n            state\n          });\n          break;\n      }\n    };\n\n    const passkeyIdentity = await WebAuthnIdentity.createWithExistingCredential({\n      retrievePublicKey,\n      onProgress: onSignProgress\n    });\n\n    // When the signing of the session occurs, the Identity.sign is triggered\n    // which in turns lead to:\n    // 1. Get passkey (navigator.credentials.get)\n    // 2. Retrieve the public key from the backend\n    // 3. Create signature\n    const {delegationIdentity, sessionKey} = await this.#createSessionDelegation({\n      identity: passkeyIdentity,\n      maxTimeToLiveInMilliseconds\n    });\n\n    // 4. Save session identity for loading it with auth client\n    const saveSession = async () =>\n      await this.#saveSessionIdentityForAuthClient({delegationIdentity, sessionKey});\n\n    await execute({\n      fn: saveSession,\n      step: WebAuthnSignInProgressStep.FinalizingSession,\n      onProgress\n    });\n\n    // 5. Load the user\n    await execute({\n      fn: loadAuth,\n      step: WebAuthnSignInProgressStep.RetrievingUser,\n      onProgress\n    });\n  }\n\n  async #createSessionDelegation({\n    identity,\n    maxTimeToLiveInMilliseconds\n  }: {identity: SignIdentity} & Pick<\n    WebAuthnSignInOptions,\n    'maxTimeToLiveInMilliseconds'\n  >): Promise<SessionDelegationIdentity> {\n    const sessionKey = await ECDSAKeyIdentity.generate({extractable: false});\n\n    const sessionLengthInMilliseconds =\n      maxTimeToLiveInMilliseconds ?? DELEGATION_IDENTITY_EXPIRATION_IN_MILLISECONDS;\n\n    // We do not provide any particular targets. This delegation is meant to work\n    // on the Internet Computer with any canister.\n    const chain = await DelegationChain.create(\n      identity,\n      sessionKey.getPublicKey(),\n      new Date(Date.now() + sessionLengthInMilliseconds)\n    );\n\n    const delegationIdentity = DelegationIdentity.fromDelegation(sessionKey, chain);\n\n    return {delegationIdentity, sessionKey};\n  }\n\n  async #saveSessionIdentityForAuthClient({\n    sessionKey,\n    delegationIdentity\n  }: SessionDelegationIdentity) {\n    const storage = new IdbStorage();\n\n    await Promise.all([\n      storage.set(KEY_STORAGE_KEY, sessionKey.getKeyPair()),\n      storage.set(\n        KEY_STORAGE_DELEGATION,\n        JSON.stringify(delegationIdentity.getDelegation().toJSON())\n      )\n    ]);\n  }\n}\n", "import type {Identity} from '@icp-sdk/core/agent';\nimport type {WebAuthnIdentity, WebAuthnNewCredential} from '@junobuild/ic-client/webauthn';\nimport {nonNullish, uint8ArrayToArrayOfNumber} from '@junobuild/utils';\nimport type {Environment} from '../../core/types/env';\nimport {setManyDocs} from '../../datastore/services/doc.services';\nimport type {User} from '../types/user';\n\nexport const createWebAuthnUser = async ({\n  delegationIdentity,\n  passkeyIdentity,\n  satelliteId\n}: {\n  delegationIdentity: Identity;\n  passkeyIdentity: WebAuthnIdentity<WebAuthnNewCredential>;\n} & Pick<Environment, 'satelliteId'>): Promise<User> => {\n  // We serialize the AAGUID as number[] instead of Uint8Array because\n  // it results in slightly smaller JSON output with the stringifier.\n  // When reading the data, we support both formats.\n  const aaguid = passkeyIdentity.getCredential().getAAGUID();\n\n  const [user, _] = await setManyDocs({\n    docs: [\n      {\n        collection: '#user',\n        doc: {\n          key: delegationIdentity.getPrincipal().toText(),\n          data: {\n            provider: 'webauthn',\n            providerData: {\n              webauthn: {\n                ...(nonNullish(aaguid) && {aaguid: uint8ArrayToArrayOfNumber(aaguid)})\n              }\n            }\n          }\n        }\n      },\n      {\n        collection: '#user-webauthn',\n        doc: {\n          key: passkeyIdentity.getCredential().getCredentialIdText(),\n          data: {\n            publicKey: passkeyIdentity.getPublicKey().toRaw()\n          }\n        }\n      }\n    ],\n    satellite: {\n      identity: delegationIdentity,\n      satelliteId\n    }\n  });\n\n  return user;\n};\n", "import type {CreatePasskeyOptions} from '@junobuild/ic-client/webauthn';\nimport type {SignProgressFn} from './progress';\n\n/**\n * Enum representing the different steps of the WebAuthn sign-in flow.\n */\nexport enum WebAuthnSignInProgressStep {\n  /** Requesting a passkey (credential) from the user */\n  RequestingUserCredential,\n  /** Validating and finalizing the credential provided by the user */\n  FinalizingCredential,\n  /** Signing the authentication challenge with the user's credential */\n  Signing,\n  /** Completing the session setup after signing */\n  FinalizingSession,\n  /** Retrieving the authenticated user information */\n  RetrievingUser\n}\n\n/**\n * Enum representing the different steps of the WebAuthn sign-up (registration) flow.\n */\nexport enum WebAuthnSignUpProgressStep {\n  /** Creating a new passkey (credential) for the user */\n  CreatingUserCredential,\n  /** Validating the created credential */\n  ValidatingUserCredential,\n  /** Finalizing the credential for use */\n  FinalizingCredential,\n  /** Signing the registration challenge. Requires the user to interact again with the authenticator for confirmation. */\n  Signing,\n  /** Completing the session setup after signing */\n  FinalizingSession,\n  /** Registering the new user in the system */\n  RegisteringUser\n}\n\n/**\n * Interface representing common sign-in and sing-up options when using a WebAuthn (passkey) based provider.\n * @interface WebAuthnSignOptions\n */\nexport interface WebAuthnSignOptions {\n  /**\n   * Maximum time to live for the session in milliseconds. Cannot be extended.\n   * @type {number}\n   */\n  maxTimeToLiveInMilliseconds?: number;\n}\n\n/**\n * Interface representing sign-in options when using a WebAuthn (passkey) based provider.\n * @interface WebAuthnSignInOptions\n */\nexport interface WebAuthnSignInOptions extends WebAuthnSignOptions {\n  /**\n   * Optional callback to receive progress updates about the sign-in flow.\n   * Useful for showing UI feedback such as loading indicators or status messages.\n   */\n  onProgress?: SignProgressFn<WebAuthnSignInProgressStep>;\n}\n\n/**\n * Interface representing sign-up options when using a WebAuthn (passkey) based provider.\n * @interface WebAuthnSignUpSessionOptions\n */\nexport interface WebAuthnSignUpOptions extends WebAuthnSignOptions {\n  /**\n   * Optional callback to receive progress updates about the sign-up flow.\n   * Useful for showing UI feedback such as loading indicators or status messages.\n   */\n  onProgress?: SignProgressFn<WebAuthnSignUpProgressStep>;\n\n  /**\n   * Options for creating the passkey credential.\n   *\n   * For example, you can provide a user-friendly display name so the passkey\n   * is easier to recognize later.\n   */\n  passkey?: CreatePasskeyOptions;\n}\n", "import {executeWithWindowGuard} from '../helpers/window.helpers';\nimport {DevIdentityProvider} from '../providers/dev-identity.providers';\nimport {GitHubProvider} from '../providers/github.providers';\nimport {GoogleProvider} from '../providers/google.providers';\nimport {InternetIdentityProvider} from '../providers/internet-identity.providers';\nimport {WebAuthnProvider} from '../providers/webauthn.providers';\nimport {AuthClientStore} from '../stores/auth-client.store';\nimport {AuthStore} from '../stores/auth.store';\nimport type {SignInContext, SignInOptions} from '../types/auth';\nimport {SignInProviderNotSupportedError} from '../types/errors';\nimport type {ProviderWithoutData} from '../types/provider';\nimport {authenticateWithAuthClient} from './_auth-client.services';\nimport {initUser} from './_user.services';\nimport {loadAuth} from './load.services';\n\n/**\n * Initialize the authClient, load or create a new user.\n * Executed on sign-in.\n *\n * \u2139\uFE0F Exposed for testing purpose only.\n */\nexport const createAuth = async ({provider}: {provider: ProviderWithoutData}) => {\n  const init = async () => {\n    const user = await initUser({provider});\n    AuthStore.getInstance().set(user);\n  };\n\n  await authenticateWithAuthClient({fn: init, syncTabsOnSuccess: true});\n};\n\n/**\n * Signs in a user with the specified options.\n *\n * @default Signs in by default with Internet Identity\n * @param {SignInOptions} [options] - The options for signing in including the provider to use for the process.\n * @returns {Promise<void>} A promise that resolves when the sign-in process is complete and the authenticated user is initialized.\n */\nexport const signIn = async (options: SignInOptions): Promise<void> => {\n  if ('google' in options) {\n    const {\n      google: {options: signInOptions}\n    } = options;\n\n    const fn = (): Promise<void> =>\n      new GoogleProvider().signIn({\n        options: signInOptions\n      });\n\n    await signInWithContext({\n      fn,\n      context: {windowGuard: false}\n    });\n\n    return;\n  }\n\n  if ('github' in options) {\n    const {\n      github: {options: signInOptions}\n    } = options;\n\n    const fn = (): Promise<void> =>\n      new GitHubProvider().signIn({\n        options: signInOptions\n      });\n\n    await signInWithContext({\n      fn,\n      context: {windowGuard: false}\n    });\n\n    return;\n  }\n\n  if ('webauthn' in options) {\n    const {\n      webauthn: {options: signInOptions, context}\n    } = options;\n\n    const fn = (): Promise<void> =>\n      new WebAuthnProvider().signIn({\n        options: signInOptions,\n        loadAuth: (): Promise<void> => loadAuth({syncTabsOnSuccess: true})\n      });\n\n    await signInWithContext({fn, context});\n\n    return;\n  }\n\n  if ('internet_identity' in options) {\n    const {\n      internet_identity: {options: iiOptions, context}\n    } = options;\n\n    const {domain, ...signInOptions} = iiOptions ?? {};\n\n    const fn = (): Promise<void> =>\n      new InternetIdentityProvider({domain}).signIn({\n        options: signInOptions,\n        authClient: AuthClientStore.getInstance().getAuthClient(),\n        initAuth: createAuth\n      });\n\n    await signInWithContext({fn, context});\n\n    return;\n  }\n\n  if ('dev' in options) {\n    const {\n      dev: {options: devOptions}\n    } = options;\n\n    const {setAuthClientStorage: setStorage} = AuthClientStore.getInstance();\n\n    const fn = (): Promise<void> =>\n      new DevIdentityProvider().signIn({\n        options: devOptions,\n        initAuth: createAuth,\n        setStorage\n      });\n\n    await signInWithContext({\n      fn,\n      context: {windowGuard: false}\n    });\n\n    return;\n  }\n\n  throw new SignInProviderNotSupportedError(\n    'An unknown or unsupported provider was provided for sign-in.'\n  );\n};\n\nconst signInWithContext = async ({\n  fn,\n  context\n}: {\n  fn: () => Promise<void>;\n  context?: SignInContext;\n}): Promise<void> => {\n  const disableWindowGuard = context?.windowGuard === false;\n\n  if (disableWindowGuard) {\n    await fn();\n    return;\n  }\n\n  await executeWithWindowGuard({fn});\n};\n", "import {executeWithWindowGuard} from '../helpers/window.helpers';\nimport {WebAuthnProvider} from '../providers/webauthn.providers';\nimport type {SignUpOptions} from '../types/auth';\nimport {SignUpProviderNotSupportedError} from '../types/errors';\nimport {loadAuthWithUser} from './load.services';\n\n/**\n * Signs up to create a new user with the specified options.\n *\n * @param {SignUpOptions} [options] - The options for signing up including the provider to use for the process.\n * @returns {Promise<void>} A promise that resolves when the sign-up process is complete and the user is authenticated.\n */\nexport const signUp = async (options: SignUpOptions): Promise<void> => {\n  const fn = async () => await signUpWithProvider(options);\n\n  const disableWindowGuard = Object.values(options)?.[0].context?.windowGuard === false;\n\n  if (disableWindowGuard) {\n    await fn();\n    return;\n  }\n\n  await executeWithWindowGuard({fn});\n};\n\nconst signUpWithProvider = async (options: SignUpOptions): Promise<void> => {\n  if ('webauthn' in options) {\n    const {\n      webauthn: {options: signUpOptions}\n    } = options;\n\n    await new WebAuthnProvider().signUp({\n      options: signUpOptions,\n      loadAuthWithUser\n    });\n    return;\n  }\n\n  throw new SignUpProviderNotSupportedError(\n    'An unknown or unsupported provider was provided for sign-up.'\n  );\n};\n", "import type {User} from '../types/user';\n\n/**\n * Checks whether a user signed in using WebAuthn.\n *\n * Acts as a type guard that narrows {@link User} to {@link User<'webauthn'>}.\n *\n * @param user - The user object to check.\n * @returns True if the user signed in via WebAuthn.\n */\nexport const isWebAuthnUser = (user: User): user is User<'webauthn'> =>\n  user?.data?.provider === 'webauthn';\n\n/**\n * Checks whether a user signed in using Google (OpenID).\n *\n * Acts as a type guard that narrows {@link User} to {@link User<'google'>}.\n *\n * @param user - The user object to check.\n * @returns True if the user signed in via Google.\n */\nexport const isGoogleUser = (user: User): user is User<'google'> =>\n  user?.data?.provider === 'google';\n\n/**\n * Checks whether a user signed in using GitHub (OpenID).\n *\n * Acts as a type guard that narrows {@link User} to {@link User<'github'>}.\n *\n * @param user - The user object to check.\n * @returns True if the user signed in via GitHub.\n */\nexport const isGitHubUser = (user: User): user is User<'github'> =>\n  user?.data?.provider === 'github';\n", "import type {ActorMethod, ActorSubclass} from '@icp-sdk/core/agent';\nimport type {IDL} from '@icp-sdk/core/candid';\nimport {getSatelliteExtendedActor as getSatelliteExtendedActorApi} from '../../core/api/actor.api';\nimport {getAnyIdentity} from '../../core/services/any-identity.services';\nimport type {SatelliteOptions} from '../../core/types/satellite';\n\n/**\n * Returns an extended satellite actor instance using the provided IDL factory and satellite options.\n *\n * This function is intended for advanced use cases where developers have implemented\n * custom endpoints in their serverless functions using the extended build type.\n *\n * In most cases, developers should not need to call this directly.\n * Extended actors are typically mapped and handled automatically.\n *\n * @template T - The actor interface type.\n *\n * @param {Object} params - The parameters for creating the actor.\n * @param {IDL.InterfaceFactory} params.idlFactory - The IDL factory defining the custom actor interface.\n * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only.\n * In browser environments, configuration is automatically inherited from `initSatellite()`.\n *\n * @returns {Promise<ActorSubclass<T>>} A promise that resolves to the extended actor instance.\n */\nexport const getSatelliteExtendedActor = async <T = Record<string, ActorMethod>>({\n  idlFactory,\n  satellite\n}: {\n  idlFactory: IDL.InterfaceFactory;\n  satellite?: SatelliteOptions;\n}): Promise<ActorSubclass<T>> => {\n  const identity = getAnyIdentity(satellite?.identity);\n\n  return await getSatelliteExtendedActorApi({\n    idlFactory,\n    ...satellite,\n    identity\n  });\n};\n", "import type {SatelliteDid} from '@junobuild/ic-client/actor';\nimport type {Asset, AssetEncoding, AssetKey, Storage} from '@junobuild/storage';\nimport {fromNullable, nonNullish} from '@junobuild/utils';\nimport {DEFAULT_READ_OPTIONS} from '../../core/constants/call-options.constants';\nimport {getAnyIdentity} from '../../core/services/any-identity.services';\nimport type {ReadOptions} from '../../core/types/call-options';\nimport type {ListParams} from '../../core/types/list';\nimport type {SatelliteOptions} from '../../core/types/satellite';\nimport {satelliteUrl} from '../../core/utils/env.utils';\nimport {\n  countAssets as countAssetsApi,\n  deleteAsset as deleteAssetApi,\n  deleteFilteredAssets as deleteFilteredAssetsApi,\n  deleteManyAssets as deleteManyAssetsApi,\n  getAsset as getAssetApi,\n  getManyAssets as getManyAssetsApi,\n  listAssets as listAssetsApi,\n  setAssetToken as setAssetTokenApi,\n  uploadAsset as uploadAssetApi\n} from '../api/storage.api';\nimport type {Assets} from '../types/storage';\nimport {sha256ToBase64String} from '../utils/crypto.utils';\n\n/**\n * Uploads a blob to the storage.\n *\n * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.\n * @returns {Promise<AssetKey>} A promise that resolves to the asset key.\n */\nexport const uploadBlob = (params: Storage & {satellite?: SatelliteOptions}): Promise<AssetKey> =>\n  uploadAssetIC(params);\n\n/**\n * Uploads a file to the storage.\n *\n * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.\n * @returns {Promise<AssetKey>} A promise that resolves to the asset key.\n */\nexport const uploadFile = (\n  params: Partial<Pick<Storage, 'filename'>> &\n    Omit<Storage, 'filename' | 'data'> & {data: File} & {satellite?: SatelliteOptions}\n): Promise<AssetKey> =>\n  uploadAssetIC({\n    filename: params.data.name,\n    ...params\n  });\n\nconst uploadAssetIC = async ({\n  filename: storageFilename,\n  data,\n  collection,\n  headers = [],\n  fullPath: storagePath,\n  token,\n  satellite: satelliteOptions,\n  encoding,\n  description\n}: Storage & {satellite?: SatelliteOptions}): Promise<AssetKey> => {\n  const identity = getAnyIdentity(satelliteOptions?.identity);\n\n  // The IC certification does not currently support encoding\n  const filename: string = decodeURI(storageFilename);\n  const fullPath: string = storagePath ?? `/${collection}/${filename}`;\n\n  const satellite = {...satelliteOptions, identity};\n\n  await uploadAssetApi({\n    asset: {\n      data,\n      filename,\n      collection,\n      token,\n      headers,\n      fullPath,\n      encoding,\n      description\n    },\n    satellite,\n    options: {certified: true}\n  });\n\n  return {\n    downloadUrl: downloadUrl({\n      satellite,\n      assetKey: {\n        fullPath,\n        token\n      }\n    }),\n    fullPath,\n    ...(nonNullish(token) && {token}),\n    name: filename\n  };\n};\n\n/**\n * Lists assets in a collection with optional filtering.\n *\n * @param {Object} params - The parameters for listing the assets.\n * @param {string} params.collection - The name of the collection.\n * @param {ListParams} [params.filter] - The filter parameters.\n * @param {ReadOptions} [params.options] - Call options controlling certification. Defaults to uncertified reads for performance unless specified.\n * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.\n * @returns {Promise<Assets>} A promise that resolves to the list of assets.\n */\nexport const listAssets = async ({\n  collection,\n  filter,\n  satellite: satelliteOptions,\n  options\n}: {\n  collection: string;\n  filter?: ListParams;\n  satellite?: SatelliteOptions;\n  options?: ReadOptions;\n}): Promise<Assets> => {\n  const satellite = {...satelliteOptions, identity: getAnyIdentity(satelliteOptions?.identity)};\n\n  const {items, ...rest} = await listAssetsApi({\n    collection,\n    filter: filter ?? {},\n    satellite,\n    options: options ?? DEFAULT_READ_OPTIONS\n  });\n\n  const assets = items.map(\n    ({\n      key: {full_path: fullPath, token: t, name, owner, description},\n      headers,\n      encodings,\n      created_at,\n      updated_at\n    }: SatelliteDid.AssetNoContent) => {\n      const token = fromNullable(t);\n\n      return {\n        fullPath,\n        description: fromNullable(description),\n        name,\n        downloadUrl: downloadUrl({\n          satellite,\n          assetKey: {fullPath, token}\n        }),\n        token,\n        headers,\n        encodings: encodings.reduce<Record<string, AssetEncoding>>(\n          (acc, [type, {modified, sha256, total_length}]) => ({\n            ...acc,\n            [type]: {\n              modified,\n              sha256: sha256ToBase64String(sha256),\n              total_length\n            }\n          }),\n          {}\n        ),\n        owner: owner.toText(),\n        created_at,\n        updated_at\n      } as Asset;\n    }\n  );\n\n  return {\n    items: assets,\n    assets,\n    ...rest\n  };\n};\n\n/**\n * Counts assets in a collection with optional filtering.\n *\n * @param {Object} params - The parameters for counting the assets.\n * @param {string} params.collection - The name of the collection.\n * @param {ListParams} [params.filter] - The filter parameters for narrowing down the count.\n * @param {ReadOptions} [params.options] - Call options controlling certification. Defaults to uncertified reads for performance unless specified.\n * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.\n * @returns {Promise<bigint>} A promise that resolves to the count of assets as a bigint.\n */\nexport const countAssets = async ({\n  collection,\n  filter,\n  satellite: satelliteOptions,\n  options\n}: {\n  collection: string;\n  filter?: ListParams;\n  satellite?: SatelliteOptions;\n  options?: ReadOptions;\n}): Promise<bigint> => {\n  const satellite = {...satelliteOptions, identity: getAnyIdentity(satelliteOptions?.identity)};\n\n  return await countAssetsApi({\n    collection,\n    satellite,\n    filter: filter ?? {},\n    options: options ?? DEFAULT_READ_OPTIONS\n  });\n};\n\n/**\n * Deletes an asset from the storage.\n *\n * @param {Object} params - The parameters for deleting the asset.\n * @param {string} params.collection - The name of the collection.\n * @param {string} params.fullPath - The full path of the asset.\n * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.\n * @returns {Promise<void>} A promise that resolves when the asset is deleted.\n */\nexport const deleteAsset = ({\n  collection,\n  fullPath,\n  satellite\n}: {\n  collection: string;\n  satellite?: SatelliteOptions;\n} & Pick<AssetKey, 'fullPath'>): Promise<void> =>\n  deleteAssetApi({\n    collection,\n    fullPath,\n    satellite: {...satellite, identity: getAnyIdentity(satellite?.identity)},\n    options: {certified: true}\n  });\n\n/**\n * Set an access token for an asset of the storage.\n *\n * @param {Object} params - The parameters for setting the access token.\n * @param {string} params.collection - The name of the collection.\n * @param {string} params.fullPath - The full path of the asset.\n * @param {string | null} params.token - The access token. Providing undined removes any existing protection and makes the asset accessible without access token.\n * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.\n * @returns {Promise<void>} A promise that resolves when the access token has been set to the asset.\n */\nexport const setAssetToken = ({\n  collection,\n  fullPath,\n  token,\n  satellite\n}: {\n  collection: string;\n  token: string | null;\n  satellite?: SatelliteOptions;\n} & Pick<AssetKey, 'fullPath'>): Promise<void> =>\n  setAssetTokenApi({\n    collection,\n    fullPath,\n    token,\n    satellite: {...satellite, identity: getAnyIdentity(satellite?.identity)},\n    options: {certified: true}\n  });\n\n/**\n * Deletes multiple assets from the storage.\n *\n * @param {Object} params - The parameters for deleting the assets.\n * @param {Array} params.assets - The list of assets with their collections and full paths.\n * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.\n * @returns {Promise<void>} A promise that resolves when the assets are deleted.\n */\nexport const deleteManyAssets = ({\n  assets,\n  satellite\n}: {\n  assets: ({collection: string} & Pick<AssetKey, 'fullPath'>)[];\n  satellite?: SatelliteOptions;\n}): Promise<void> =>\n  deleteManyAssetsApi({\n    assets,\n    satellite: {...satellite, identity: getAnyIdentity(satellite?.identity)},\n    options: {certified: true}\n  });\n\n/**\n * Deletes multiple assets from a collection based on filtering criteria.\n *\n * @param {Object} params - The parameters for deleting the assets.\n * @param {string} params.collection - The name of the collection from which to delete assets.\n * @param {ListParams} [params.filter] - The filter criteria to match assets for deletion.\n * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.\n * @returns {Promise<void>} A promise that resolves when the assets matching the filter criteria are deleted.\n */\nexport const deleteFilteredAssets = async ({\n  collection,\n  satellite: satelliteOptions,\n  filter\n}: {\n  collection: string;\n  satellite?: SatelliteOptions;\n  filter?: ListParams;\n}): Promise<void> => {\n  const satellite = {...satelliteOptions, identity: getAnyIdentity(satelliteOptions?.identity)};\n\n  return await deleteFilteredAssetsApi({\n    collection,\n    satellite,\n    filter: filter ?? {},\n    options: {certified: true}\n  });\n};\n\n/**\n * Retrieves an asset from the storage.\n *\n * @param {Object} params - The parameters for retrieving the asset.\n * @param {string} params.collection - The name of the collection.\n * @param {string} params.fullPath - The full path of the asset.\n * @param {ReadOptions} [params.options] - Call options controlling certification. Defaults to uncertified reads for performance unless specified.\n * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.\n * @returns {Promise<AssetNoContent | undefined>} A promise that resolves to the asset or undefined if not found.\n */\nexport const getAsset = async ({\n  satellite,\n  options,\n  ...rest\n}: {\n  collection: string;\n  satellite?: SatelliteOptions;\n  options?: ReadOptions;\n} & Pick<AssetKey, 'fullPath'>): Promise<SatelliteDid.AssetNoContent | undefined> => {\n  const identity = getAnyIdentity(satellite?.identity);\n\n  return await getAssetApi({\n    ...rest,\n    satellite: {...satellite, identity},\n    options: options ?? DEFAULT_READ_OPTIONS\n  });\n};\n\n/**\n * Retrieves multiple assets from the storage.\n *\n * @param {Object} params - The parameters for retrieving the assets.\n * @param {Array} params.assets - The list of assets with their collections and full paths.\n * @param {ReadOptions} [params.options] - Call options controlling certification. Defaults to uncertified reads for performance unless specified.\n * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.\n * @returns {Promise<Array<AssetNoContent | undefined>>} A promise that resolves to an array of assets or undefined if not found.\n */\nexport const getManyAssets = async ({\n  satellite,\n  options,\n  ...rest\n}: {\n  assets: ({collection: string} & Pick<AssetKey, 'fullPath'>)[];\n  satellite?: SatelliteOptions;\n  options?: ReadOptions;\n}): Promise<(SatelliteDid.AssetNoContent | undefined)[]> => {\n  const identity = getAnyIdentity(satellite?.identity);\n\n  return await getManyAssetsApi({\n    ...rest,\n    satellite: {...satellite, identity},\n    options: options ?? DEFAULT_READ_OPTIONS\n  });\n};\n\n/**\n * Returns a public URL for accessing a specific asset stored on a Satellite.\n *\n * This URL can be used to:\n * - Open the file directly in a browser\n * - Embed the asset in HTML elements like `<img src=\"...\">`, `<video src=\"...\">`, or `<a href=\"...\">`\n * - Programmatically download or display the asset in your application\n *\n * ### Example\n * ```ts\n * const url = downloadUrl({\n *   assetKey: {\n *     fullPath: '/images/logo.png',\n *   }\n * });\n *\n * // Usage in an <img> tag\n * <img src={url} alt=\"Logo\" />\n * ```\n *\n * @param {Object} params - Parameters for generating the URL.\n * @param {Object} params.assetKey - Identifies the asset to generate the URL for.\n * @param {string} params.assetKey.fullPath - The full path of the asset (e.g., `/folder/file.jpg`).\n * @param {string} [params.assetKey.token] - Optional access token for accessing protected assets.\n * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.\n * @returns {string} A full URL pointing to the asset.\n */\nexport const downloadUrl = ({\n  assetKey: {fullPath, token},\n  satellite: satelliteOptions\n}: {\n  assetKey: Pick<AssetKey, 'fullPath' | 'token'>;\n} & {satellite?: SatelliteOptions}): string => {\n  const satellite = {...satelliteOptions, identity: getAnyIdentity(satelliteOptions?.identity)};\n\n  return `${satelliteUrl(satellite)}${fullPath}${nonNullish(token) ? `?token=${token}` : ''}`;\n};\n", "import type {ConsoleDid, SatelliteDid} from '@junobuild/ic-client/actor';\nimport {assertNonNullish, isBrowser, toNullable} from '@junobuild/utils';\nimport {UPLOAD_CHUNK_SIZE} from '../constants/upload.constants';\nimport type {EncodingType} from '../types/storage';\nimport type {UploadAsset, UploadParams, UploadWithProposalParams} from '../types/upload';\n\ntype InitAssetKey = SatelliteDid.InitAssetKey | ConsoleDid.InitAssetKey;\ntype UploadChunk = SatelliteDid.UploadChunk | ConsoleDid.UploadChunk;\ntype CommitBatch = SatelliteDid.CommitBatch | ConsoleDid.CommitBatch;\n\nexport const uploadAsset = async ({\n  asset: {data, headers, ...restAsset},\n  actor,\n  progress\n}: {\n  asset: UploadAsset;\n} & UploadParams): Promise<void> => {\n  const {init_asset_upload, upload_asset_chunk, commit_asset_upload} = actor;\n\n  const {batch_id: batchId} = await init_asset_upload(mapInitAssetUploadParams(restAsset));\n\n  progress?.onInitiatedBatch();\n\n  const {chunkIds} = await uploadChunks({data, uploadFn: upload_asset_chunk, batchId});\n\n  progress?.onUploadedFileChunks(restAsset.fullPath);\n\n  await commitAsset({\n    commitFn: commit_asset_upload,\n    batchId,\n    data,\n    headers,\n    chunkIds\n  });\n\n  progress?.onCommittedBatch();\n};\n\nexport const uploadAssetWithProposal = async ({\n  asset: {data, headers, ...restAsset},\n  proposalId,\n  actor,\n  progress\n}: {\n  asset: UploadAsset;\n} & UploadWithProposalParams): Promise<void> => {\n  const {init_proposal_asset_upload, upload_proposal_asset_chunk, commit_proposal_asset_upload} =\n    actor;\n\n  progress?.onInitiatedBatch();\n\n  const {batch_id: batchId} = await init_proposal_asset_upload(\n    mapInitAssetUploadParams(restAsset),\n    proposalId\n  );\n\n  const {chunkIds} = await uploadChunks({data, uploadFn: upload_proposal_asset_chunk, batchId});\n\n  progress?.onUploadedFileChunks(restAsset.fullPath);\n\n  await commitAsset({\n    commitFn: commit_proposal_asset_upload,\n    batchId,\n    data,\n    headers,\n    chunkIds\n  });\n\n  progress?.onCommittedBatch();\n};\n\nexport const uploadAssetsWithProposal = async ({\n  assets,\n  proposalId,\n  actor,\n  progress\n}: {\n  assets: UploadAsset[];\n} & UploadWithProposalParams): Promise<void> => {\n  const {\n    init_proposal_many_assets_upload,\n    upload_proposal_asset_chunk,\n    commit_proposal_many_assets_upload\n  } = actor;\n\n  const batchIds = await init_proposal_many_assets_upload(\n    assets.map(mapInitAssetUploadParams),\n    proposalId\n  );\n\n  progress?.onInitiatedBatch();\n\n  const uploadAssetChunk = async ({\n    fullPath,\n    data,\n    headers\n  }: UploadAsset): Promise<BatchToCommit> => {\n    const initializedBatch = batchIds.find(([batchIdFullPath]) => batchIdFullPath === fullPath);\n\n    assertNonNullish(initializedBatch);\n\n    const [_, initUpload] = initializedBatch;\n    const {batch_id: batchId} = initUpload;\n\n    const {chunkIds} = await uploadChunks({data, uploadFn: upload_proposal_asset_chunk, batchId});\n\n    progress?.onUploadedFileChunks(fullPath);\n\n    return {\n      batchId,\n      headers,\n      chunkIds,\n      data\n    };\n  };\n\n  const batchAndChunkIdsToCommit = await Promise.all(assets.map(uploadAssetChunk));\n\n  await commit_proposal_many_assets_upload(batchAndChunkIdsToCommit.map(mapCommitBatch));\n\n  progress?.onCommittedBatch();\n};\n\nconst mapInitAssetUploadParams = ({\n  filename,\n  collection,\n  token,\n  fullPath,\n  encoding,\n  description\n}: Omit<UploadAsset, 'headers' | 'data'>): InitAssetKey => ({\n  collection,\n  full_path: fullPath,\n  name: filename,\n  token: toNullable<string>(token),\n  encoding_type: toNullable<EncodingType>(encoding),\n  description: toNullable(description)\n});\n\ntype BatchToCommit = {\n  batchId: bigint;\n  chunkIds: UploadChunkResult[];\n} & Pick<UploadAsset, 'headers' | 'data'>;\n\nconst mapCommitBatch = ({batchId, chunkIds, headers, data}: BatchToCommit): CommitBatch => {\n  const contentType: [[string, string]] | undefined =\n    headers.find(([type, _]) => type.toLowerCase() === 'content-type') === undefined &&\n    data.type !== undefined &&\n    data.type !== ''\n      ? [['Content-Type', data.type]]\n      : undefined;\n\n  return {\n    batch_id: batchId,\n    chunk_ids: chunkIds.map(({chunk_id}: UploadChunkResult) => chunk_id),\n    headers: [...headers, ...(contentType ?? [])]\n  };\n};\n\nconst commitAsset = async ({\n  commitFn,\n  ...rest\n}: {\n  commitFn: (commitBatch: CommitBatch) => Promise<void>;\n  batchId: bigint;\n  chunkIds: UploadChunkResult[];\n} & Pick<UploadAsset, 'headers' | 'data'>) => {\n  const commitBatch = mapCommitBatch(rest);\n  await commitFn(commitBatch);\n};\n\nconst uploadChunks = async ({\n  data,\n  uploadFn,\n  batchId\n}: {\n  batchId: bigint;\n} & Pick<UploadAsset, 'data'> &\n  Pick<UploadChunkParams, 'uploadFn'>): Promise<{chunkIds: UploadChunkResult[]}> => {\n  const uploadChunks: UploadChunkParams[] = [];\n\n  // Prevent transforming chunk to arrayBuffer error: The requested file could not be read, typically due to permission problems that have occurred after a reference to a file was acquired.\n  const clone: Blob = isBrowser() ? new Blob([await data.arrayBuffer()]) : data;\n\n  // Split data into chunks\n  let orderId = 0n;\n  for (let start = 0; start < clone.size; start += UPLOAD_CHUNK_SIZE) {\n    const chunk: Blob = clone.slice(start, start + UPLOAD_CHUNK_SIZE);\n\n    uploadChunks.push({\n      batchId,\n      chunk,\n      uploadFn,\n      orderId\n    });\n\n    orderId++;\n  }\n\n  // Upload chunks to the IC in batch - i.e. 12 chunks uploaded at a time.\n  let chunkIds: UploadChunkResult[] = [];\n  for await (const results of batchUploadChunks({uploadChunks})) {\n    chunkIds = [...chunkIds, ...results];\n  }\n\n  return {chunkIds};\n};\n\nasync function* batchUploadChunks({\n  uploadChunks,\n  limit = 12\n}: {\n  uploadChunks: UploadChunkParams[];\n  limit?: number;\n}): AsyncGenerator<UploadChunkResult[], void> {\n  for (let i = 0; i < uploadChunks.length; i = i + limit) {\n    const batch = uploadChunks.slice(i, i + limit);\n    const result = await Promise.all(batch.map((params) => uploadChunk(params)));\n    yield result;\n  }\n}\n\ninterface UploadChunkResult {\n  chunk_id: bigint;\n}\n\ninterface UploadChunkParams {\n  batchId: bigint;\n  chunk: Blob;\n  uploadFn: (uploadChunk: UploadChunk) => Promise<UploadChunkResult>;\n  orderId: bigint;\n}\n\nconst uploadChunk = async ({\n  batchId,\n  chunk,\n  uploadFn,\n  orderId\n}: UploadChunkParams): Promise<UploadChunkResult> =>\n  uploadFn({\n    batch_id: batchId,\n    content: new Uint8Array(await chunk.arrayBuffer()),\n    order_id: toNullable(orderId)\n  });\n", "import type {SatelliteDid} from '@junobuild/ic-client/actor';\nimport {\n  uploadAsset as uploadAssetStorage,\n  type AssetKey,\n  type UploadAsset\n} from '@junobuild/storage';\nimport {fromNullable, toNullable} from '@junobuild/utils';\nimport {getSatelliteActor} from '../../core/api/actor.api';\nimport type {ActorReadParams, ActorUpdateParams} from '../../core/types/actor';\nimport type {ListParams, ListResults} from '../../core/types/list';\nimport {toListParams} from '../../core/utils/list.utils';\n\nexport const uploadAsset = async ({\n  asset,\n  ...rest\n}: {asset: UploadAsset} & ActorUpdateParams): Promise<void> => {\n  const actor = await getSatelliteActor(rest);\n\n  await uploadAssetStorage({\n    actor,\n    asset\n  });\n};\n\nexport const listAssets = async ({\n  collection,\n  filter,\n  ...rest\n}: {\n  collection: string;\n  filter: ListParams;\n} & ActorReadParams): Promise<ListResults<SatelliteDid.AssetNoContent>> => {\n  const {list_assets} = await getSatelliteActor(rest);\n\n  const {\n    items: assets,\n    items_length,\n    items_page,\n    matches_length,\n    matches_pages\n  } = await list_assets(collection, toListParams(filter));\n\n  return {\n    items: assets.map(([_, asset]) => asset),\n    items_length,\n    items_page: fromNullable(items_page),\n    matches_length,\n    matches_pages: fromNullable(matches_pages)\n  };\n};\n\nexport const countAssets = async ({\n  collection,\n  filter,\n  ...rest\n}: {\n  collection: string;\n  filter: ListParams;\n} & ActorReadParams): Promise<bigint> => {\n  const {count_assets} = await getSatelliteActor(rest);\n\n  return count_assets(collection, toListParams(filter));\n};\n\nexport const deleteAsset = async ({\n  collection,\n  fullPath,\n  ...rest\n}: {\n  collection: string;\n} & ActorUpdateParams &\n  Pick<AssetKey, 'fullPath'>): Promise<void> => {\n  const actor = await getSatelliteActor(rest);\n\n  return actor.del_asset(collection, fullPath);\n};\n\nexport const deleteManyAssets = async ({\n  assets,\n  satellite\n}: {\n  assets: ({collection: string} & Pick<AssetKey, 'fullPath'>)[];\n} & ActorUpdateParams): Promise<void> => {\n  const {del_many_assets} = await getSatelliteActor({satellite, options: {certified: true}});\n\n  const payload: [string, string][] = assets.map(({collection, fullPath}) => [\n    collection,\n    fullPath\n  ]);\n\n  await del_many_assets(payload);\n};\n\nexport const deleteFilteredAssets = async ({\n  collection,\n  filter,\n  ...rest\n}: {\n  collection: string;\n  filter: ListParams;\n} & ActorUpdateParams): Promise<void> => {\n  const {del_filtered_assets} = await getSatelliteActor(rest);\n\n  return del_filtered_assets(collection, toListParams(filter));\n};\n\nexport const setAssetToken = async ({\n  collection,\n  fullPath,\n  token,\n  ...rest\n}: {\n  collection: string;\n  token: string | null;\n} & ActorUpdateParams &\n  Pick<AssetKey, 'fullPath'>): Promise<void> => {\n  const {set_asset_token} = await getSatelliteActor(rest);\n\n  return set_asset_token(collection, fullPath, toNullable(token));\n};\n\nexport const getAsset = async ({\n  collection,\n  fullPath,\n  ...rest\n}: {\n  collection: string;\n} & ActorReadParams &\n  Pick<AssetKey, 'fullPath'>): Promise<SatelliteDid.AssetNoContent | undefined> => {\n  const {get_asset} = await getSatelliteActor(rest);\n  return fromNullable(await get_asset(collection, fullPath));\n};\n\nexport const getManyAssets = async ({\n  assets,\n  ...rest\n}: {\n  assets: ({collection: string} & Pick<AssetKey, 'fullPath'>)[];\n} & ActorReadParams): Promise<(SatelliteDid.AssetNoContent | undefined)[]> => {\n  const {get_many_assets} = await getSatelliteActor(rest);\n\n  const payload: [string, string][] = assets.map(({collection, fullPath}) => [\n    collection,\n    fullPath\n  ]);\n\n  const resultsAssets = await get_many_assets(payload);\n\n  return resultsAssets.map(([_, resultAsset]) => fromNullable(resultAsset));\n};\n", "export const sha256ToBase64String = (sha256: Iterable<number>): string =>\n  btoa([...sha256].map((c) => String.fromCharCode(c)).join(''));\n"],
  "mappings": "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",
  "names": ["uint8ArrayToArrayOfNumber", "DER_COSE_OID", "wrapDER", "uint8ArrayToBase64", "Cbor", "SignIdentity", "arrayBufferToUint8Array", "isNullish", "uint8ArraysEqual", "nonNullish", "extractAAGUID", "authData", "bytes", "result", "bytesToAAGUID", "aaguid", "byte", "_authDataToCose", "dataView", "idLenBytes", "v", "i", "credentialIdLength", "_coseToDerEncodedBlob", "cose", "CosePublicKey", "_cose", "#encodedKey", "WebAuthnCredential", "#credentialId", "#publicKey", "credentialId", "WebAuthnNewCredential", "#aaguidText", "#aaguidBytes", "rest", "optionAaguid", "WebAuthnExistingCredential", "WebAuthnIdentityHostnameError", "WebAuthnIdentityCredentialNotInitializedError", "WebAuthnIdentityCreateCredentialOnTheDeviceError", "WebAuthnIdentityCredentialNotPublicKeyError", "WebAuthnIdentityNoAttestationError", "WebAuthnIdentityInvalidCredentialIdError", "WebAuthnIdentityEncodeCborSignatureError", "WebAuthnIdentityNoAuthenticatorDataError", "PUBLIC_KEY_COSE_ALGORITHMS", "AUTHENTICATOR_ABORT_TIMEOUT", "randomValue", "createChallenge", "createUserId", "hostname", "href", "WebAuthnIdentityHostnameError", "relyingPartyId", "appId", "createPasskeyOptions", "userOptions", "name", "relyingParty", "user", "algorithm", "retrievePasskeyOptions", "options", "execute", "fn", "step", "onProgress", "result", "err", "WebAuthnSignProgressStep", "createAbortSignal", "timeout", "retrieveCredentials", "challenge", "credentialIds", "passkeyOptions", "id", "assertWebAuthnStateInitialized", "state", "WebAuthnIdentityCredentialNotInitializedError", "assertNonNullishCredential", "credential", "isNullish", "WebAuthnIdentityCreateCredentialOnTheDeviceError", "assertCredentialPublicKey", "type", "WebAuthnIdentityCredentialNotPublicKeyError", "WebAuthnIdentity", "_WebAuthnIdentity", "SignIdentity", "#onSignProgress", "#state", "args", "retrievePublicKey", "#createInitializedState", "WebAuthnNewCredential", "restArgs", "attestationObject", "rawId", "WebAuthnIdentityNoAttestationError", "authData", "Cbor", "arrayBufferToUint8Array", "cose", "_authDataToCose", "blob", "uint8ArraysEqual", "WebAuthnIdentityInvalidCredentialIdError", "WebAuthnExistingCredential", "response", "clientDataJSON", "authenticatorData", "signature", "WebAuthnIdentityNoAuthenticatorDataError", "encoded", "WebAuthnIdentityEncodeCborSignatureError", "isWebAuthnAvailable", "nonNullish", "assertNonNullish", "nonNullish", "isNullish", "Store", "data", "callback", "callbackId", "id", "AuthStore", "_AuthStore", "Store", "authUser", "callback", "unsubscribe", "emit", "message", "detail", "$event", "Actor", "isNullish", "isNullish", "HttpAgent", "nonNullish", "DOCKER_CONTAINER_URL", "DOCKER_INTERNET_IDENTITY_ID", "createAgent", "identity", "container", "host", "nonNullish", "DOCKER_CONTAINER_URL", "shouldFetchRootKey", "HttpAgent", "AgentStore", "_AgentStore", "#agents", "isNullish", "identity", "rest", "key", "agent", "createAgent", "ActorStore", "_ActorStore", "#actors", "isNullish", "satelliteId", "identity", "actorKey", "rest", "key", "actor", "idlFactory", "canisterId", "agent", "AgentStore", "Actor", "AuthClient", "IdbStorage", "KEY_STORAGE_DELEGATION", "KEY_STORAGE_KEY", "isNullish", "AuthClientStore", "_AuthClientStore", "#instance", "#authClient", "storage", "delegationChain", "sessionKey", "signOut", "options", "resetAuth", "AuthClientStore", "AuthStore", "ActorStore", "AgentStore", "initAuthTimeoutWorker", "auth", "workerUrl", "worker", "timeoutSignOut", "emit", "signOut", "data", "msg", "value", "AuthStore", "user", "isNullish", "isNullish", "nonNullish", "notEmptyString", "AuthBroadcastChannel", "_AuthBroadcastChannel", "#instance", "#bc", "#emitterId", "handler", "origin", "eventOrigin", "data", "EnvStore", "_EnvStore", "Store", "env", "callback", "unsubscribe", "authenticateWithAuthClient", "fn", "syncTabsOnSuccess", "authenticated", "authenticate", "EnvStore", "syncTabs", "authenticateWithNewAuthClient", "createAuthClient", "AuthClientStore", "isAuthenticated", "safeCreateAuthClient", "AuthBroadcastChannel", "err", "isSatelliteError", "error", "type", "JUNO_DATASTORE_ERROR_USER_CANNOT_UPDATE", "isNullish", "nonNullish", "DEFAULT_READ_OPTIONS", "AnonymousIdentity", "nonNullish", "isNullish", "getIdentity", "AuthClientStore", "unsafeIdentity", "getAuthClient", "createAuthClient", "getIdentityOnce", "user", "AuthStore", "isNullish", "authClient", "getAnyIdentity", "identity", "nonNullish", "getIdentity", "AnonymousIdentity", "fromNullable", "isNullish", "nonNullish", "Actor", "isNullish", "nonNullish", "HttpAgent", "idlFactory", "IDL", "Memory", "InitStorageArgs", "InitSatelliteArgs", "OpenIdPrepareDelegationArgs", "AuthenticationArgs", "Doc", "PreparedDelegation", "Authentication", "JwtFindProviderError", "JwtVerifyError", "GetOrRefreshJwksError", "PrepareDelegationError", "AuthenticationError", "AuthenticateResultResponse", "OpenIdPrepareAutomationArgs", "AuthenticateAutomationArgs", "AutomationScope", "AutomationController", "PrepareAutomationError", "AuthenticationAutomationError", "AuthenticateAutomationResultResponse", "AssetKey", "CertifyAssetsCursor", "CertifyAssetsStrategy", "CertifyAssetsArgs", "CertifyAssetsResult", "CommitBatch", "CommitProposal", "ListOrderField", "ListOrder", "TimestampMatcher", "ListMatcher", "ListPaginate", "ListParams", "DeleteControllersArgs", "AccessKeyKind", "AccessKeyScope", "AccessKey", "DelDoc", "CollectionType", "DelRule", "DeleteProposalAssets", "DepositCyclesArgs", "AssetEncodingNoContent", "AssetNoContent", "OpenIdDelegationProvider", "OpenIdAuthProviderDelegationConfig", "OpenIdAuthProviderConfig", "AuthenticationConfigOpenId", "AuthenticationConfigInternetIdentity", "AuthenticationRules", "AuthenticationConfig", "OpenIdAutomationProvider", "OpenIdAutomationProviderControllerConfig", "RepositoryKey", "OpenIdAutomationRepositoryConfig", "OpenIdAutomationProviderConfig", "AutomationConfigOpenId", "AutomationConfig", "ConfigMaxMemorySize", "DbConfig", "StorageConfigIFrame", "StorageConfigRawAccess", "StorageConfigRedirect", "StorageConfig", "Config", "OpenIdGetDelegationArgs", "GetDelegationArgs", "Delegation", "SignedDelegation", "GetDelegationError", "GetDelegationResultResponse", "ProposalStatus", "AssetsUpgradeOptions", "SegmentsDeploymentOptions", "ProposalType", "Proposal", "Permission", "RateConfig", "Rule", "HttpRequest", "StreamingCallbackToken", "StreamingStrategy", "HttpResponse", "StreamingCallbackHttpResponse", "InitAssetKey", "InitUploadResult", "ListResults", "CustomDomain", "ListResults_1", "ListProposalsOrder", "ListProposalsPaginate", "ListProposalsParams", "ProposalKey", "ListProposalResults", "ListRulesMatcher", "ListRulesParams", "ListRulesResults", "MemorySize", "SetAuthenticationConfig", "SetAutomationConfig", "SetAccessKey", "SetControllersArgs", "SetDbConfig", "SetDoc", "SetRule", "SetStorageConfig", "SetStorageConfigOptions", "SetStorageConfigWithOptions", "UploadChunk", "UploadChunkResult", "Tokens", "AssertMissionControlCenterArgs", "OpenIdData", "OpenId", "Provider", "Account", "Result", "CreateMissionControlArgs", "CreateOrbiterArgs", "InitStorageMemory", "CreateSatelliteArgs", "GetCreateCanisterFeeArgs", "Result_1", "SegmentKind", "CyclesTokens", "FactoryFee", "PaymentStatus", "IcpPayment", "IcrcPaymentKey", "Account_1", "IcrcPayment", "StorableSegmentKind", "ListSegmentsArgs", "SegmentKey", "Segment", "FeesArgs", "SetSegmentsArgs", "SetSegmentMetadataArgs", "UnsetSegmentsArgs", "createAgent", "identity", "host", "localActor", "HttpAgent", "useOrInitAgent", "agent", "rest", "initAgent", "container", "nonNullish", "getSatelliteActor", "satelliteId", "certified", "rest", "getActor", "idlFactory", "getConsoleActor", "consoleId", "certified", "rest", "getActor", "idlFactory", "canisterId", "isNullish", "createActor", "config", "agent", "useOrInitAgent", "Actor", "assertNonNullish", "nonNullish", "satelliteUrl", "customSatelliteId", "customContainer", "satelliteId", "customOrEnvSatelliteId", "container", "customOrEnvContainer", "nonNullish", "containerHost", "protocol", "DOCKER_CONTAINER_URL", "EnvStore", "getSatelliteActor", "satellite", "certified", "getActor", "Te", "_e", "getSatelliteExtendedActor", "idlFactory", "rest", "customSatelliteId", "customContainer", "satelliteId", "customOrEnvSatelliteId", "assertNonNullish", "container", "customOrEnvContainer", "ActorStore", "Principal", "isNullish", "toNullable", "SignInError", "SignInInitError", "SignInUserInterruptError", "SignInProviderNotSupportedError", "SignInMissingClientIdError", "WebAuthnSignInRetrievePublicKeyError", "SignUpProviderNotSupportedError", "InitError", "ListError", "toListMatcherTimestamp", "matcher", "isNullish", "toNullable", "ListError", "toListParams", "paginate", "order", "owner", "Principal", "fromArray", "mapData", "data", "err", "fromArray", "fromNullable", "toArray", "toNullable", "toSetDoc", "doc", "data", "version", "description", "toDelDoc", "fromDoc", "key", "owner", "docDescription", "rest", "getDoc", "collection", "key", "rest", "get_doc", "getSatelliteActor", "doc", "fromNullable", "isNullish", "fromDoc", "getManyDocs", "docs", "get_many_docs", "payload", "resultsDocs", "results", "resultDoc", "nonNullish", "setDoc", "set_doc", "toSetDoc", "updatedDoc", "setManyDocs", "set_many_docs", "updatedDocs", "deleteDoc", "del_doc", "toDelDoc", "deleteManyDocs", "del_many_docs", "deleteFilteredDocs", "filter", "del_filtered_docs", "toListParams", "listDocs", "list_docs", "items", "items_page", "items_length", "matches_length", "matches_pages", "item", "dataArray", "owner", "description", "version", "mapData", "countDocs", "count_docs", "getDoc", "satellite", "options", "rest", "identity", "getAnyIdentity", "DEFAULT_READ_OPTIONS", "getManyDocs", "setDoc", "setManyDocs", "deleteDoc", "deleteManyDocs", "deleteFilteredDocs", "filter", "listDocs", "countDocs", "initUser", "provider", "user", "userId", "loadUser", "nonNullish", "createUser", "error", "t", "s_", "userOnCreateError", "getUser", "identity", "getIdentity", "isNullish", "InitError", "getDoc", "rest", "setDoc", "loadAuth", "syncTabsOnSuccess", "authenticateWithAuthClient", "user", "loadUser", "AuthStore", "reloadAuth", "authenticateWithNewAuthClient", "authenticated", "fn", "loadAuthWithUser", "initAuthBroadcastListener", "bc", "AuthBroadcastChannel", "onLogin", "reloadAuth", "emit", "err", "envSatelliteId", "viteEnvSatelliteId", "envContainer", "viteEnvContainer", "envGoogleClientId", "viteEnvGoogleClientId", "envGitHubClientId", "viteEnvGitHubClientId", "envApiUrl", "viteEnvApiUrl", "isEmptyString", "isNullish", "nonNullish", "DELEGATION_IDENTITY_EXPIRATION", "ALLOW_PIN_AUTHENTICATION", "II_DESIGN_V1_POPUP", "II_DESIGN_V2_POPUP", "INTERNET_COMPUTER_ORG", "IC0_APP", "ID_AI", "isBrowser", "isNullish", "popupCenter", "width", "height", "innerWidth", "innerHeight", "y", "x", "ERROR_USER_INTERRUPT", "isNullish", "execute", "fn", "step", "onProgress", "result", "err", "AuthClientSignInProgressStep", "AuthClientProvider", "options", "authClient", "initAuth", "execute", "#loginWithAuthClient", "resolve", "reject", "isNullish", "SignInInitError", "error", "ERROR_USER_INTERRUPT", "SignInUserInterruptError", "SignInError", "DELEGATION_IDENTITY_EXPIRATION", "ALLOW_PIN_AUTHENTICATION", "InternetIdentityProvider", "AuthClientProvider", "#domain", "domain", "windowed", "identityProvider", "container", "EnvStore", "isNullish", "identityV1Domain", "INTERNET_COMPUTER_ORG", "IC0_APP", "ID_AI", "isEmptyString", "env", "internetIdentityId", "nonNullish", "DOCKER_INTERNET_IDENTITY_ID", "containerHost", "protocol", "DOCKER_CONTAINER_URL", "popupCenter", "hostname", "II_DESIGN_V2_POPUP", "II_DESIGN_V1_POPUP", "arrayBufferToUint8Array", "uint8ArrayToBase64", "toBase64URL", "uint8Array", "generateSalt", "buildNonce", "salt", "caller", "principal", "bytes", "hash", "generateNonce", "Ed25519KeyIdentity", "isNullish", "base64ToUint8Array", "uint8ArrayToBase64", "Delegation", "ECDSAKeyIdentity", "fromNullable", "DelegationChain", "DelegationIdentity", "isEmptyString", "isNullish", "notEmptyString", "CONTEXT_KEY", "GOOGLE_PROVIDER", "GITHUB_PROVIDER", "InvalidUrlError", "ContextUndefinedError", "FedCMIdentityCredentialUndefinedError", "FedCMIdentityCredentialInvalidError", "AuthenticationError", "AuthenticationUrlHashError", "AuthenticationInvalidStateError", "AuthenticationUndefinedJwtError", "GetDelegationError", "GetDelegationRetryError", "ApiGitHubInitError", "options", "ApiGitHubFinalizeError", "JSON_KEY_CALLER", "JSON_KEY_SALT", "JSON_KEY_STATE", "stringifyContext", "caller", "state", "salt", "data", "uint8ArrayToBase64", "parseContext", "jsonData", "jsonCaller", "jsonSalt", "Ed25519KeyIdentity", "base64ToUint8Array", "initContext", "generateState", "nonce", "generateNonce", "storedData", "loadContext", "storedContext", "getAuthActor", "auth", "identity", "getSatelliteActor", "getConsoleActor", "authenticate", "actorParams", "args", "getDelegation", "get_delegation", "generateIdentity", "delegations", "sessionKey", "userKey", "signedDelegations", "delegationChain", "authenticateSession", "jwt", "context", "ECDSAKeyIdentity", "publicKey", "result", "expiration", "rest", "signedDelegation", "retryGetDelegation", "delegation", "signature", "pubkey", "signedExpiration", "targets", "Delegation", "fromNullable", "maxRetries", "i", "resolve", "Err", "initOAuth", "url", "error", "finalizeOAuth", "body", "authenticateGitHubWithRedirect", "finalizeUrl", "search", "urlParams", "code", "idToken", "authenticateGoogleWithRedirect", "hash", "params", "savedState", "redirect", "google", "parseUrl", "buildGenerateState", "initUrl", "requestUrl", "requestGitHubJwtWithRedirect", "authUrl", "clientId", "authScopes", "redirectUrl", "currentUrl", "generateRandomState", "toBase64URL", "generateGoogleState", "_params", "requestGoogleJwtWithRedirect", "loginHint", "requestGoogleJwtWithCredentials", "configURL", "domainHint", "identityCredential", "type", "requestJwt", "github", "userInitUrl", "restRedirect", "credentials", "configUrl", "isEmptyString", "isNullish", "nonNullish", "notEmptyString", "parseOptionalUrl", "url", "handleRedirectCallback", "options", "satelliteId", "EnvStore", "isNullish", "SignInInitError", "container", "auth", "finalizeUrl", "notEmptyString", "apiUrl", "envApiUrl", "isEmptyString", "parseOptionalUrl", "delegationChain", "sessionKey", "identity", "doc", "se", "nonNullish", "AuthClientStore", "user", "fromDoc", "loadAuthWithUser", "onBeforeUnload", "$event", "addBeforeUnload", "removeBeforeUnload", "executeWithWindowGuard", "fn", "DelegationChain", "DelegationIdentity", "ECDSAKeyIdentity", "Ed25519KeyIdentity", "promisifyRequest", "request", "resolve", "reject", "createStore", "dbName", "storeName", "dbp", "getDB", "db", "txMode", "callback", "defaultGetStoreFunc", "defaultGetStore", "update", "key", "updater", "customStore", "defaultGetStore", "store", "resolve", "reject", "promisifyRequest", "err", "UnsafeDevIdentityNotBrowserError", "UnsafeDevIdentityNotLocalhostError", "UnsafeDevIdentityInvalidIdentifierError", "length", "identifiersIdbStore", "createStore", "generateUnsafeDevIdentity", "identifier", "maxTimeToLiveInMilliseconds", "UnsafeDevIdentityNotBrowserError", "hostname", "UnsafeDevIdentityNotLocalhostError", "generateSeed", "UnsafeDevIdentityInvalidIdentifierError", "generate", "seedBytes", "rootIdentity", "Ed25519KeyIdentity", "sessionKey", "ECDSAKeyIdentity", "sessionLengthInMilliseconds", "chain", "DelegationChain", "DelegationIdentity", "saveIdentifierUsage", "update", "value", "now", "identifiersIdbStore", "result", "DevIdentityProvider", "options", "initAuth", "setStorage", "sessionKey", "delegationChain", "K", "isEmptyString", "isNullish", "notEmptyString", "GitHubProvider", "options", "clientId", "envGitHubClientId", "isNullish", "SignInMissingClientIdError", "redirect", "Ie", "initUrl", "notEmptyString", "apiUrl", "envApiUrl", "isEmptyString", "parseOptionalUrl", "isNullish", "GoogleProvider", "options", "clientId", "envGoogleClientId", "isNullish", "SignInMissingClientIdError", "redirect", "Ie", "IdbStorage", "KEY_STORAGE_DELEGATION", "KEY_STORAGE_KEY", "AnonymousIdentity", "DelegationChain", "DelegationIdentity", "DER_COSE_OID", "ECDSAKeyIdentity", "unwrapDER", "isNullish", "uint8ArrayToBase64", "nonNullish", "uint8ArrayToArrayOfNumber", "createWebAuthnUser", "delegationIdentity", "passkeyIdentity", "satelliteId", "aaguid", "user", "_", "setManyDocs", "nonNullish", "uint8ArrayToArrayOfNumber", "WebAuthnSignInProgressStep", "WebAuthnSignUpProgressStep", "WebAuthnProvider", "onProgress", "maxTimeToLiveInMilliseconds", "passkeyOptions", "loadAuthWithUser", "satelliteId", "EnvStore", "isNullish", "SignInInitError", "onSignProgress", "step", "state", "B", "passkeyIdentity", "execute", "F", "delegationIdentity", "sessionKey", "#createSessionDelegation", "user", "createWebAuthnUser", "#saveSessionIdentityForAuthClient", "loadAuth", "retrievePublicKey", "credentialId", "doc", "getDoc", "uint8ArrayToBase64", "AnonymousIdentity", "WebAuthnSignInRetrievePublicKeyError", "data", "publicKey", "unwrapDER", "DER_COSE_OID", "identity", "ECDSAKeyIdentity", "sessionLengthInMilliseconds", "chain", "DelegationChain", "DelegationIdentity", "storage", "IdbStorage", "KEY_STORAGE_KEY", "KEY_STORAGE_DELEGATION", "createAuth", "provider", "authenticateWithAuthClient", "user", "initUser", "AuthStore", "signIn", "options", "signInOptions", "signInWithContext", "GoogleProvider", "GitHubProvider", "context", "WebAuthnProvider", "loadAuth", "iiOptions", "domain", "InternetIdentityProvider", "AuthClientStore", "devOptions", "setStorage", "DevIdentityProvider", "SignInProviderNotSupportedError", "fn", "executeWithWindowGuard", "signUp", "options", "fn", "signUpWithProvider", "executeWithWindowGuard", "signUpOptions", "WebAuthnProvider", "loadAuthWithUser", "SignUpProviderNotSupportedError", "isWebAuthnUser", "user", "isGoogleUser", "isGitHubUser", "getSatelliteExtendedActor", "idlFactory", "satellite", "identity", "getAnyIdentity", "fromNullable", "nonNullish", "assertNonNullish", "isBrowser", "toNullable", "uploadAsset", "data", "headers", "restAsset", "actor", "progress", "init_asset_upload", "upload_asset_chunk", "commit_asset_upload", "batchId", "mapInitAssetUploadParams", "chunkIds", "uploadChunks", "commitAsset", "mapInitAssetUploadParams", "filename", "collection", "token", "fullPath", "encoding", "description", "toNullable", "mapCommitBatch", "batchId", "chunkIds", "headers", "data", "contentType", "type", "_", "chunk_id", "commitAsset", "commitFn", "rest", "commitBatch", "uploadChunks", "uploadFn", "clone", "isBrowser", "orderId", "start", "chunk", "results", "batchUploadChunks", "limit", "i", "batch", "params", "uploadChunk", "fromNullable", "toNullable", "uploadAsset", "asset", "rest", "actor", "getSatelliteActor", "T", "listAssets", "collection", "filter", "list_assets", "assets", "items_length", "items_page", "matches_length", "matches_pages", "toListParams", "_", "fromNullable", "countAssets", "count_assets", "deleteAsset", "fullPath", "deleteManyAssets", "satellite", "del_many_assets", "payload", "deleteFilteredAssets", "del_filtered_assets", "setAssetToken", "token", "set_asset_token", "toNullable", "getAsset", "get_asset", "getManyAssets", "get_many_assets", "resultAsset", "sha256ToBase64String", "sha256", "c", "uploadBlob", "params", "uploadAssetIC", "uploadFile", "storageFilename", "data", "collection", "headers", "storagePath", "token", "satelliteOptions", "encoding", "description", "identity", "getAnyIdentity", "filename", "fullPath", "satellite", "uploadAsset", "downloadUrl", "nonNullish", "listAssets", "filter", "options", "items", "rest", "DEFAULT_READ_OPTIONS", "assets", "t", "name", "owner", "encodings", "created_at", "updated_at", "fromNullable", "acc", "type", "modified", "sha256", "total_length", "sha256ToBase64String", "countAssets", "deleteAsset", "setAssetToken", "deleteManyAssets", "deleteFilteredAssets", "getAsset", "getManyAssets", "satelliteUrl", "parseEnv", "userEnv", "satelliteId", "envSatelliteId", "assertNonNullish", "container", "envContainer", "initJuno", "initSatellite", "env", "EnvStore", "loadAuth", "authSubscribe", "initAuthTimeoutWorker", "syncTabsSubscribe", "initAuthBroadcastListener", "nonNullish", "onAuthStateChange", "callback", "AuthStore"]
}
