{"version":3,"file":"classes.mjs","sources":["../../../src/utils/classes.ts"],"sourcesContent":["import { AccountMeta, TransactionInstruction } from '@solana/web3.js';\nimport { TransactionBuilder } from './TransactionBuilder';\nimport { Response, Rfq } from '@/plugins/rfqModule';\n\nexport type IxType = 'TransactionInstruction' | 'TransactionBuilder';\nexport class InstructionUniquenessTracker {\n  constructor(public readonly IxArray: TransactionInstruction[]) {\n    this.IxArray = IxArray;\n  }\n\n  private matchKeys = (\n    keys: AccountMeta[],\n    keysToMatch: AccountMeta[]\n  ): boolean => {\n    if (keys.length !== keysToMatch.length) {\n      return false;\n    }\n    return keys.every(\n      (key, index) =>\n        key.isSigner === keysToMatch[index].isSigner &&\n        key.isWritable === keysToMatch[index].isWritable &&\n        key.pubkey.equals(keysToMatch[index].pubkey)\n    );\n  };\n  private matchInstruction = (ixToBeAdded: TransactionInstruction): boolean => {\n    return !this.IxArray.every(\n      (ix) =>\n        !(\n          this.matchKeys(ix.keys, ixToBeAdded.keys) &&\n          ix.programId.equals(ixToBeAdded.programId) &&\n          ix.data.equals(ixToBeAdded.data)\n        )\n    );\n  };\n\n  checkedAdd(\n    ix: TransactionInstruction | TransactionBuilder,\n    ixType: IxType\n  ): boolean {\n    switch (ixType) {\n      case 'TransactionInstruction':\n        if (!this.matchInstruction(ix as TransactionInstruction)) {\n          this.IxArray.push(ix as TransactionInstruction);\n          return true;\n        }\n        return false;\n      case 'TransactionBuilder':\n        const instructions = (ix as TransactionBuilder).getInstructions();\n        const areAllUnique = instructions.every(\n          (ix) => !this.matchInstruction(ix)\n        );\n        if (areAllUnique) {\n          this.IxArray.push(...instructions);\n          return true;\n        }\n        return false;\n      default:\n        throw new Error('Invalid Instruction type');\n    }\n  }\n\n  static dedup(builders: TransactionBuilder[]): TransactionBuilder[] {\n    const tracker = new InstructionUniquenessTracker([]);\n    const result = [];\n    for (const builder of builders) {\n      const isUnique = tracker.checkedAdd(builder, 'TransactionBuilder');\n      if (isUnique) {\n        result.push(builder);\n      }\n    }\n\n    return result;\n  }\n}\n\nexport class RfqTimers {\n  public timestampExpiry: Date;\n  public timestampStart: Date;\n  public timeStampSettlement: Date;\n\n  constructor(rfq: Rfq) {\n    this.timestampStart = new Date(Number(rfq.creationTimestamp));\n    this.timestampExpiry = new Date(\n      this.timestampStart.getTime() + Number(rfq.activeWindow) * 1000\n    );\n    this.timeStampSettlement = new Date(\n      this.timestampExpiry.getTime() + Number(rfq.settlingWindow) * 1000\n    );\n  }\n\n  isRfqExpired(): boolean {\n    return Date.now() >= this.timestampExpiry.getTime();\n  }\n\n  isRfqSettlementWindowElapsed(): boolean {\n    return Date.now() >= this.timeStampSettlement.getTime();\n  }\n}\n\nexport class ResponseTimers {\n  public timestampExpiry: Date;\n\n  constructor(response: Response) {\n    this.timestampExpiry = new Date(response.expirationTimestamp);\n  }\n\n  isResponseExpired(): boolean {\n    return Date.now() >= this.timestampExpiry.getTime();\n  }\n}\n"],"names":["InstructionUniquenessTracker","IxArray","_this","_classCallCheck","_defineProperty","keys","keysToMatch","length","every","key","index","isSigner","isWritable","pubkey","equals","ixToBeAdded","ix","matchKeys","programId","data","_createClass","value","checkedAdd","ixType","_this2","matchInstruction","push","instructions","getInstructions","areAllUnique","_this$IxArray","apply","_toConsumableArray","Error","dedup","builders","tracker","result","_iterator","_createForOfIteratorHelper","_step","s","n","done","builder","isUnique","err","e","f","RfqTimers","rfq","timestampStart","Date","Number","creationTimestamp","timestampExpiry","getTime","activeWindow","timeStampSettlement","settlingWindow","isRfqExpired","now","isRfqSettlementWindowElapsed","ResponseTimers","response","expirationTimestamp","isResponseExpired"],"mappings":"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"}