{
  "version": 3,
  "sources": ["../../src/api/_actor.api.ts", "../../src/api/proposal.api.ts", "../../src/api/storage.api.ts", "../../src/handlers/proposal.apply.handlers.ts", "../../src/api/ic.api.ts", "../../src/types/proposal.params.ts", "../../src/handlers/proposal.reject.handlers.ts"],
  "sourcesContent": ["import {\n  type ConsoleActor,\n  type SatelliteActor,\n  getConsoleActor,\n  getSatelliteActor\n} from '@junobuild/ic-client/actor';\nimport type {CdnParameters} from '../types/actor.params';\n\nexport const getCdnActor = (cdn: CdnParameters): Promise<ConsoleActor | SatelliteActor> =>\n  'satellite' in cdn ? getSatelliteActor(cdn.satellite) : getConsoleActor(cdn.console);\n", "import type {ConsoleDid} from '@junobuild/ic-client/actor';\nimport type {CdnParameters} from '../types/actor.params';\nimport type {\n  CommitProposal,\n  Proposal,\n  ProposalId,\n  ProposalType,\n  RejectProposal\n} from '../types/cdn';\nimport {getCdnActor} from './_actor.api';\n\nexport const initProposal = async ({\n  cdn,\n  proposalType\n}: {\n  proposalType: ProposalType;\n  cdn: CdnParameters;\n}): Promise<[ProposalId, Proposal]> => {\n  const {init_proposal} = await getCdnActor(cdn);\n  return init_proposal(proposalType);\n};\n\nexport const submitProposal = async ({\n  cdn,\n  proposalId\n}: {\n  cdn: CdnParameters;\n  proposalId: ProposalId;\n}): Promise<[ProposalId, Proposal]> => {\n  const {submit_proposal} = await getCdnActor(cdn);\n  return submit_proposal(proposalId);\n};\n\nexport const rejectProposal = async ({\n  cdn,\n  proposal\n}: {\n  cdn: CdnParameters;\n  proposal: RejectProposal;\n}): Promise<void> => {\n  const {reject_proposal} = await getCdnActor(cdn);\n  await reject_proposal(proposal);\n};\n\nexport const commitProposal = async ({\n  cdn,\n  proposal\n}: {\n  cdn: CdnParameters;\n  proposal: CommitProposal;\n}): Promise<void> => {\n  const {commit_proposal} = await getCdnActor(cdn);\n  await commit_proposal(proposal);\n};\n\nexport const deleteProposalAssets = async ({\n  cdn,\n  proposalIds\n}: {\n  cdn: CdnParameters;\n  proposalIds: ProposalId[];\n}): Promise<void> => {\n  const {delete_proposal_assets} = await getCdnActor(cdn);\n  await delete_proposal_assets({proposal_ids: proposalIds});\n};\n\nexport const countProposals = async ({cdn}: {cdn: CdnParameters}): Promise<bigint> => {\n  const {count_proposals} = await getCdnActor(cdn);\n  return count_proposals();\n};\n\nexport const listProposals = async ({\n  cdn,\n  filter\n}: {\n  cdn: CdnParameters;\n  filter: ConsoleDid.ListProposalsParams;\n}): Promise<ConsoleDid.ListProposalResults> => {\n  const {list_proposals} = await getCdnActor(cdn);\n  return list_proposals(filter);\n};\n\nexport const getProposal = async ({\n  cdn,\n  proposalId\n}: {\n  cdn: CdnParameters;\n  proposalId: ProposalId;\n}): Promise<[] | [Proposal]> => {\n  const {get_proposal} = await getCdnActor(cdn);\n  return get_proposal(proposalId);\n};\n", "import {\n  uploadAssetWithProposal as uploadAssetWithProposalStorage,\n  uploadAssetsWithProposal as uploadAssetsWithProposalStorage,\n  type UploadAsset,\n  type UploadWithProposalParams\n} from '@junobuild/storage';\nimport type {CdnParameters} from '../types/actor.params';\nimport {getCdnActor} from './_actor.api';\n\nexport const uploadAssetWithProposal = async ({\n  cdn,\n  ...rest\n}: {\n  asset: UploadAsset;\n  cdn: CdnParameters;\n} & Omit<UploadWithProposalParams, 'actor'>): Promise<void> => {\n  const actor = await getCdnActor(cdn);\n\n  await uploadAssetWithProposalStorage({\n    actor,\n    ...rest\n  });\n};\n\nexport const uploadAssetsWithProposal = async ({\n  cdn,\n  ...rest\n}: {\n  assets: UploadAsset[];\n  cdn: CdnParameters;\n} & Omit<UploadWithProposalParams, 'actor'>): Promise<void> => {\n  const actor = await getCdnActor(cdn);\n\n  await uploadAssetsWithProposalStorage({\n    actor,\n    ...rest\n  });\n};\n", "import {nonNullish} from '@junobuild/utils';\nimport {createSnapshot} from '../api/ic.api';\nimport {commitProposal, deleteProposalAssets} from '../api/proposal.api';\nimport {type ApplyProposalParams, ApplyProposalProgressStep} from '../types/proposal.params';\n\nexport const executeApplyProposal = async ({\n  takeSnapshot = false,\n  clearProposalAssets = false,\n  onProgress,\n  cdn,\n  proposal,\n  postApply\n}: ApplyProposalParams) => {\n  try {\n    // 1. We take a snapshot - if the dev opted-in\n    const snapshot = async () => (takeSnapshot ? await createSnapshot({cdn}) : Promise.resolve());\n    await execute({fn: snapshot, onProgress, step: ApplyProposalProgressStep.TakingSnapshot});\n\n    // 2. Commit the proposal\n    const commit = async () => await commitProposal({cdn, proposal});\n    await execute({fn: commit, onProgress, step: ApplyProposalProgressStep.CommittingProposal});\n\n    // 3. Clear proposal assets if required\n    const clear = async () =>\n      clearProposalAssets\n        ? await deleteProposalAssets({cdn, proposalIds: [proposal.proposal_id]})\n        : Promise.resolve();\n    await execute({fn: clear, onProgress, step: ApplyProposalProgressStep.ClearingProposalAssets});\n  } finally {\n    // 4. If provided, the post apply runs in any case\n    const job = async () => (nonNullish(postApply) ? await postApply() : Promise.resolve());\n    await execute({fn: job, onProgress, step: ApplyProposalProgressStep.PostApply});\n  }\n};\n\nconst execute = async ({\n  fn,\n  step,\n  onProgress\n}: {fn: () => Promise<void>; step: ApplyProposalProgressStep} & Pick<\n  ApplyProposalParams,\n  'onProgress'\n>) => {\n  onProgress?.({\n    step,\n    state: 'in_progress'\n  });\n\n  try {\n    await fn();\n\n    onProgress?.({\n      step,\n      state: 'success'\n    });\n  } catch (err: unknown) {\n    onProgress?.({\n      step,\n      state: 'error'\n    });\n\n    throw err;\n  }\n};\n", "import {type IcManagementDid, IcManagementCanister} from '@icp-sdk/canisters/ic-management';\nimport {Principal} from '@icp-sdk/core/principal';\nimport {type ActorParameters, useOrInitAgent} from '@junobuild/ic-client/actor';\nimport type {CdnParameters} from '../types/actor.params';\n\nconst listCanisterSnapshots = async ({\n  actor,\n  canisterId\n}: {\n  actor: ActorParameters;\n  canisterId: Principal;\n}): Promise<IcManagementDid.list_canister_snapshots_result> => {\n  const agent = await useOrInitAgent(actor);\n\n  const {listCanisterSnapshots} = IcManagementCanister.create({\n    agent\n  });\n\n  return listCanisterSnapshots({canisterId});\n};\n\nconst takeCanisterSnapshot = async ({\n  actor,\n  ...rest\n}: {\n  actor: ActorParameters;\n  canisterId: Principal;\n  snapshotId?: IcManagementDid.snapshot_id;\n}): Promise<IcManagementDid.take_canister_snapshot_result> => {\n  const agent = await useOrInitAgent(actor);\n\n  const {takeCanisterSnapshot} = IcManagementCanister.create({\n    agent\n  });\n\n  return takeCanisterSnapshot(rest);\n};\n\nexport const createSnapshot = async ({cdn}: {cdn: CdnParameters}) => {\n  const mapParams = (): {actor: ActorParameters; canisterId: Principal} => {\n    if ('satellite' in cdn) {\n      const {\n        satellite: {satelliteId, ...rest}\n      } = cdn;\n      return {\n        canisterId: satelliteId instanceof Principal ? satelliteId : Principal.from(satelliteId),\n        actor: rest\n      };\n    }\n\n    const {\n      console: {consoleId, ...rest}\n    } = cdn;\n    return {\n      canisterId: consoleId instanceof Principal ? consoleId : Principal.from(consoleId),\n      actor: rest\n    };\n  };\n\n  const params = mapParams();\n\n  const snapshots = await listCanisterSnapshots(params);\n\n  // TODO: currently only one snapshot per canister is supported on the IC\n  await takeCanisterSnapshot({\n    ...params,\n    snapshotId: snapshots?.[0]?.id\n  });\n};\n", "import type {CdnParameters} from './actor.params';\nimport type {CommitProposal} from './cdn';\n\nexport enum ApplyProposalProgressStep {\n  TakingSnapshot,\n  CommittingProposal,\n  ClearingProposalAssets,\n  PostApply\n}\n\nexport enum RejectProposalProgressStep {\n  RejectingProposal,\n  ClearingProposalAssets,\n  PostReject\n}\n\nexport type ProposalProgressState = 'in_progress' | 'success' | 'error';\n\nexport interface ApplyProposalProgress {\n  step: ApplyProposalProgressStep;\n  state: ProposalProgressState;\n}\n\nexport interface RejectProposalProgress {\n  step: RejectProposalProgressStep;\n  state: ProposalProgressState;\n}\n\nexport interface ApplyProposalParams {\n  cdn: CdnParameters;\n  proposal: CommitProposal;\n  takeSnapshot?: boolean;\n  clearProposalAssets?: boolean;\n  postApply?: () => Promise<void>;\n  onProgress?: (progress: ApplyProposalProgress) => void;\n}\n\nexport type RejectProposalParams = Omit<\n  ApplyProposalParams,\n  'postApply' | 'takeSnapshot' | 'onProgress'\n> & {\n  postReject?: () => Promise<void>;\n  onProgress?: (progress: RejectProposalProgress) => void;\n};\n", "import {nonNullish} from '@junobuild/utils';\nimport {deleteProposalAssets, rejectProposal} from '../api/proposal.api';\nimport {type RejectProposalParams, RejectProposalProgressStep} from '../types/proposal.params';\n\nexport const executeRejectProposal = async ({\n  clearProposalAssets = false,\n  onProgress,\n  cdn,\n  proposal,\n  postReject\n}: RejectProposalParams) => {\n  try {\n    // 1. Reject the proposal\n    const reject = async () => await rejectProposal({cdn, proposal});\n    await execute({fn: reject, onProgress, step: RejectProposalProgressStep.RejectingProposal});\n\n    // 2. Clear proposal assets if required\n    const clear = async () =>\n      clearProposalAssets\n        ? await deleteProposalAssets({cdn, proposalIds: [proposal.proposal_id]})\n        : Promise.resolve();\n    await execute({fn: clear, onProgress, step: RejectProposalProgressStep.ClearingProposalAssets});\n  } finally {\n    // 3. If provided, the post apply runs in any case\n    const job = async () => (nonNullish(postReject) ? await postReject() : Promise.resolve());\n    await execute({fn: job, onProgress, step: RejectProposalProgressStep.PostReject});\n  }\n};\n\nconst execute = async ({\n  fn,\n  step,\n  onProgress\n}: {fn: () => Promise<void>; step: RejectProposalProgressStep} & Pick<\n  RejectProposalParams,\n  'onProgress'\n>) => {\n  onProgress?.({\n    step,\n    state: 'in_progress'\n  });\n\n  try {\n    await fn();\n\n    onProgress?.({\n      step,\n      state: 'success'\n    });\n  } catch (err: unknown) {\n    onProgress?.({\n      step,\n      state: 'error'\n    });\n\n    throw err;\n  }\n};\n"],
  "mappings": "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",
  "names": ["getConsoleActor", "getSatelliteActor", "getCdnActor", "cdn", "initProposal", "cdn", "proposalType", "init_proposal", "getCdnActor", "submitProposal", "proposalId", "submit_proposal", "rejectProposal", "proposal", "reject_proposal", "commitProposal", "commit_proposal", "deleteProposalAssets", "proposalIds", "delete_proposal_assets", "countProposals", "count_proposals", "listProposals", "filter", "list_proposals", "getProposal", "get_proposal", "uploadAssetWithProposalStorage", "uploadAssetsWithProposalStorage", "uploadAssetWithProposal", "cdn", "rest", "actor", "getCdnActor", "uploadAssetWithProposalStorage", "uploadAssetsWithProposal", "uploadAssetsWithProposalStorage", "nonNullish", "IcManagementCanister", "Principal", "useOrInitAgent", "listCanisterSnapshots", "actor", "canisterId", "agent", "takeCanisterSnapshot", "rest", "createSnapshot", "cdn", "params", "satelliteId", "consoleId", "snapshots", "ApplyProposalProgressStep", "RejectProposalProgressStep", "executeApplyProposal", "takeSnapshot", "clearProposalAssets", "onProgress", "cdn", "proposal", "postApply", "execute", "createSnapshot", "commitProposal", "deleteProposalAssets", "nonNullish", "fn", "step", "err", "nonNullish", "executeRejectProposal", "clearProposalAssets", "onProgress", "cdn", "proposal", "postReject", "execute", "rejectProposal", "deleteProposalAssets", "nonNullish", "fn", "step", "err"]
}
