{
  "additionalPrograms": [],
  "kind": "rootNode",
  "program": {
    "accounts": [
      {
        "data": {
          "fields": [
            {
              "kind": "structFieldTypeNode",
              "name": "header",
              "type": {
                "kind": "definedTypeLinkNode",
                "name": "header"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "subscriptionAuthority",
              "type": {
                "kind": "publicKeyTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "mint",
              "type": {
                "kind": "publicKeyTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "amount",
              "type": {
                "endian": "le",
                "format": "u64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "expiryTs",
              "type": {
                "endian": "le",
                "format": "i64",
                "kind": "numberTypeNode"
              }
            }
          ],
          "kind": "structTypeNode"
        },
        "kind": "accountNode",
        "name": "fixedDelegation",
        "pda": {
          "kind": "pdaLinkNode",
          "name": "fixedDelegation"
        }
      },
      {
        "data": {
          "fields": [
            {
              "kind": "structFieldTypeNode",
              "name": "discriminator",
              "type": {
                "endian": "le",
                "format": "u8",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "owner",
              "type": {
                "kind": "publicKeyTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "bump",
              "type": {
                "endian": "le",
                "format": "u8",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "status",
              "type": {
                "endian": "le",
                "format": "u8",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "data",
              "type": {
                "kind": "definedTypeLinkNode",
                "name": "planData"
              }
            }
          ],
          "kind": "structTypeNode"
        },
        "kind": "accountNode",
        "name": "plan",
        "pda": {
          "kind": "pdaLinkNode",
          "name": "plan"
        }
      },
      {
        "data": {
          "fields": [
            {
              "kind": "structFieldTypeNode",
              "name": "header",
              "type": {
                "kind": "definedTypeLinkNode",
                "name": "header"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "subscriptionAuthority",
              "type": {
                "kind": "publicKeyTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "mint",
              "type": {
                "kind": "publicKeyTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "currentPeriodStartTs",
              "type": {
                "endian": "le",
                "format": "i64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "periodLengthS",
              "type": {
                "endian": "le",
                "format": "u64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "expiryTs",
              "type": {
                "endian": "le",
                "format": "i64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "amountPerPeriod",
              "type": {
                "endian": "le",
                "format": "u64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "amountPulledInPeriod",
              "type": {
                "endian": "le",
                "format": "u64",
                "kind": "numberTypeNode"
              }
            }
          ],
          "kind": "structTypeNode"
        },
        "kind": "accountNode",
        "name": "recurringDelegation",
        "pda": {
          "kind": "pdaLinkNode",
          "name": "recurringDelegation"
        }
      },
      {
        "data": {
          "fields": [
            {
              "kind": "structFieldTypeNode",
              "name": "discriminator",
              "type": {
                "endian": "le",
                "format": "u8",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "user",
              "type": {
                "kind": "publicKeyTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "tokenMint",
              "type": {
                "kind": "publicKeyTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "payer",
              "type": {
                "kind": "publicKeyTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "bump",
              "type": {
                "endian": "le",
                "format": "u8",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "initId",
              "type": {
                "endian": "le",
                "format": "i64",
                "kind": "numberTypeNode"
              }
            }
          ],
          "kind": "structTypeNode"
        },
        "kind": "accountNode",
        "name": "subscriptionAuthority",
        "pda": {
          "kind": "pdaLinkNode",
          "name": "subscriptionAuthority"
        }
      },
      {
        "data": {
          "fields": [
            {
              "kind": "structFieldTypeNode",
              "name": "header",
              "type": {
                "kind": "definedTypeLinkNode",
                "name": "header"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "terms",
              "type": {
                "kind": "definedTypeLinkNode",
                "name": "planTerms"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "amountPulledInPeriod",
              "type": {
                "endian": "le",
                "format": "u64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "currentPeriodStartTs",
              "type": {
                "endian": "le",
                "format": "i64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "expiresAtTs",
              "type": {
                "endian": "le",
                "format": "i64",
                "kind": "numberTypeNode"
              }
            }
          ],
          "kind": "structTypeNode"
        },
        "kind": "accountNode",
        "name": "subscriptionDelegation",
        "pda": {
          "kind": "pdaLinkNode",
          "name": "subscriptionDelegation"
        }
      },
      {
        "data": {
          "fields": [],
          "kind": "structTypeNode"
        },
        "kind": "accountNode",
        "name": "eventAuthority",
        "pda": {
          "kind": "pdaLinkNode",
          "name": "eventAuthority"
        }
      }
    ],
    "definedTypes": [
      {
        "kind": "definedTypeNode",
        "name": "createFixedDelegationData",
        "type": {
          "fields": [
            {
              "kind": "structFieldTypeNode",
              "name": "nonce",
              "type": {
                "endian": "le",
                "format": "u64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "amount",
              "type": {
                "endian": "le",
                "format": "u64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "expiryTs",
              "type": {
                "endian": "le",
                "format": "i64",
                "kind": "numberTypeNode"
              }
            }
          ],
          "kind": "structTypeNode"
        }
      },
      {
        "kind": "definedTypeNode",
        "name": "planTerms",
        "type": {
          "fields": [
            {
              "kind": "structFieldTypeNode",
              "name": "amount",
              "type": {
                "endian": "le",
                "format": "u64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "periodHours",
              "type": {
                "endian": "le",
                "format": "u64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "createdAt",
              "type": {
                "endian": "le",
                "format": "i64",
                "kind": "numberTypeNode"
              }
            }
          ],
          "kind": "structTypeNode"
        }
      },
      {
        "kind": "definedTypeNode",
        "name": "planData",
        "type": {
          "fields": [
            {
              "kind": "structFieldTypeNode",
              "name": "planId",
              "type": {
                "endian": "le",
                "format": "u64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "mint",
              "type": {
                "kind": "publicKeyTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "terms",
              "type": {
                "kind": "definedTypeLinkNode",
                "name": "planTerms"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "endTs",
              "type": {
                "endian": "le",
                "format": "i64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "destinations",
              "type": {
                "count": {
                  "kind": "fixedCountNode",
                  "value": 4
                },
                "item": {
                  "kind": "publicKeyTypeNode"
                },
                "kind": "arrayTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "pullers",
              "type": {
                "count": {
                  "kind": "fixedCountNode",
                  "value": 4
                },
                "item": {
                  "kind": "publicKeyTypeNode"
                },
                "kind": "arrayTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "metadataUri",
              "type": {
                "kind": "fixedSizeTypeNode",
                "size": 128,
                "type": {
                  "encoding": "utf8",
                  "kind": "stringTypeNode"
                }
              }
            }
          ],
          "kind": "structTypeNode"
        }
      },
      {
        "kind": "definedTypeNode",
        "name": "createRecurringDelegationData",
        "type": {
          "fields": [
            {
              "kind": "structFieldTypeNode",
              "name": "nonce",
              "type": {
                "endian": "le",
                "format": "u64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "amountPerPeriod",
              "type": {
                "endian": "le",
                "format": "u64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "periodLengthS",
              "type": {
                "endian": "le",
                "format": "u64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "startTs",
              "type": {
                "endian": "le",
                "format": "i64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "expiryTs",
              "type": {
                "endian": "le",
                "format": "i64",
                "kind": "numberTypeNode"
              }
            }
          ],
          "kind": "structTypeNode"
        }
      },
      {
        "kind": "definedTypeNode",
        "name": "subscribeData",
        "type": {
          "fields": [
            {
              "kind": "structFieldTypeNode",
              "name": "planId",
              "type": {
                "endian": "le",
                "format": "u64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "planBump",
              "type": {
                "endian": "le",
                "format": "u8",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "expectedMint",
              "type": {
                "kind": "publicKeyTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "expectedAmount",
              "type": {
                "endian": "le",
                "format": "u64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "expectedPeriodHours",
              "type": {
                "endian": "le",
                "format": "u64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "expectedCreatedAt",
              "type": {
                "endian": "le",
                "format": "i64",
                "kind": "numberTypeNode"
              }
            }
          ],
          "kind": "structTypeNode"
        }
      },
      {
        "kind": "definedTypeNode",
        "name": "updatePlanData",
        "type": {
          "fields": [
            {
              "kind": "structFieldTypeNode",
              "name": "status",
              "type": {
                "endian": "le",
                "format": "u8",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "endTs",
              "type": {
                "endian": "le",
                "format": "i64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "pullers",
              "type": {
                "count": {
                  "kind": "fixedCountNode",
                  "value": 4
                },
                "item": {
                  "kind": "publicKeyTypeNode"
                },
                "kind": "arrayTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "metadataUri",
              "type": {
                "kind": "fixedSizeTypeNode",
                "size": 128,
                "type": {
                  "encoding": "utf8",
                  "kind": "stringTypeNode"
                }
              }
            }
          ],
          "kind": "structTypeNode"
        }
      },
      {
        "kind": "definedTypeNode",
        "name": "transferData",
        "type": {
          "fields": [
            {
              "kind": "structFieldTypeNode",
              "name": "amount",
              "type": {
                "endian": "le",
                "format": "u64",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "delegator",
              "type": {
                "kind": "publicKeyTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "mint",
              "type": {
                "kind": "publicKeyTypeNode"
              }
            }
          ],
          "kind": "structTypeNode"
        }
      },
      {
        "kind": "definedTypeNode",
        "name": "accountDiscriminator",
        "type": {
          "kind": "enumTypeNode",
          "size": {
            "endian": "le",
            "format": "u8",
            "kind": "numberTypeNode"
          },
          "variants": [
            {
              "discriminator": 0,
              "kind": "enumEmptyVariantTypeNode",
              "name": "subscriptionAuthority"
            },
            {
              "discriminator": 1,
              "kind": "enumEmptyVariantTypeNode",
              "name": "plan"
            },
            {
              "discriminator": 2,
              "kind": "enumEmptyVariantTypeNode",
              "name": "fixedDelegation"
            },
            {
              "discriminator": 3,
              "kind": "enumEmptyVariantTypeNode",
              "name": "recurringDelegation"
            },
            {
              "discriminator": 4,
              "kind": "enumEmptyVariantTypeNode",
              "name": "subscriptionDelegation"
            }
          ]
        }
      },
      {
        "kind": "definedTypeNode",
        "name": "planStatus",
        "type": {
          "kind": "enumTypeNode",
          "size": {
            "endian": "le",
            "format": "u8",
            "kind": "numberTypeNode"
          },
          "variants": [
            {
              "discriminator": 0,
              "kind": "enumEmptyVariantTypeNode",
              "name": "sunset"
            },
            {
              "discriminator": 1,
              "kind": "enumEmptyVariantTypeNode",
              "name": "active"
            }
          ]
        }
      },
      {
        "kind": "definedTypeNode",
        "name": "header",
        "type": {
          "fields": [
            {
              "kind": "structFieldTypeNode",
              "name": "discriminator",
              "type": {
                "endian": "le",
                "format": "u8",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "version",
              "type": {
                "endian": "le",
                "format": "u8",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "bump",
              "type": {
                "endian": "le",
                "format": "u8",
                "kind": "numberTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "delegator",
              "type": {
                "kind": "publicKeyTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "delegatee",
              "type": {
                "kind": "publicKeyTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "payer",
              "type": {
                "kind": "publicKeyTypeNode"
              }
            },
            {
              "kind": "structFieldTypeNode",
              "name": "initId",
              "type": {
                "endian": "le",
                "format": "i64",
                "kind": "numberTypeNode"
              }
            }
          ],
          "kind": "structTypeNode"
        }
      }
    ],
    "errors": [
      {
        "code": 100,
        "kind": "errorNode",
        "message": "Account must be a signer",
        "name": "notSigner"
      },
      {
        "code": 101,
        "kind": "errorNode",
        "message": "Invalid account address",
        "name": "invalidAddress"
      },
      {
        "code": 102,
        "kind": "errorNode",
        "message": "Invalid escrow PDA derivation",
        "name": "invalidEscrowPda"
      },
      {
        "code": 103,
        "kind": "errorNode",
        "message": "Invalid subscription-authority PDA derivation",
        "name": "invalidSubscriptionAuthorityPda"
      },
      {
        "code": 104,
        "kind": "errorNode",
        "message": "Expected system program",
        "name": "notSystemProgram"
      },
      {
        "code": 105,
        "kind": "errorNode",
        "message": "Token Program does not match other accounts",
        "name": "invalidTokenProgram"
      },
      {
        "code": 106,
        "kind": "errorNode",
        "message": "Invalid Token-2022 mint account data",
        "name": "invalidToken2022MintAccountData"
      },
      {
        "code": 107,
        "kind": "errorNode",
        "message": "Invalid Token-2022 token account data",
        "name": "invalidToken2022TokenAccountData"
      },
      {
        "code": 108,
        "kind": "errorNode",
        "message": "Invalid associated token account address",
        "name": "invalidAssociatedTokenAccountDerivedAddress"
      },
      {
        "code": 109,
        "kind": "errorNode",
        "message": "Invalid SPL Token mint account data",
        "name": "invalidTokenSplMintAccountData"
      },
      {
        "code": 110,
        "kind": "errorNode",
        "message": "Invalid SPL Token account data",
        "name": "invalidTokenSplTokenAccountData"
      },
      {
        "code": 111,
        "kind": "errorNode",
        "message": "Invalid account data",
        "name": "invalidAccountData"
      },
      {
        "code": 112,
        "kind": "errorNode",
        "message": "Invalid instruction data",
        "name": "invalidInstructionData"
      },
      {
        "code": 113,
        "kind": "errorNode",
        "message": "Not enough account keys provided",
        "name": "notEnoughAccountKeys"
      },
      {
        "code": 114,
        "kind": "errorNode",
        "message": "Invalid instruction",
        "name": "invalidInstruction"
      },
      {
        "code": 115,
        "kind": "errorNode",
        "message": "Arithmetic Overflow",
        "name": "arithmeticOverflow"
      },
      {
        "code": 116,
        "kind": "errorNode",
        "message": "Arithmetic Underflow",
        "name": "arithmeticUnderflow"
      },
      {
        "code": 117,
        "kind": "errorNode",
        "message": "Invalid account discriminator",
        "name": "invalidAccountDiscriminator"
      },
      {
        "code": 118,
        "kind": "errorNode",
        "message": "Mint has ConfidentialTransfer extension",
        "name": "mintHasConfidentialTransfer"
      },
      {
        "code": 119,
        "kind": "errorNode",
        "message": "Mint has NonTransferable extension",
        "name": "mintHasNonTransferable"
      },
      {
        "code": 120,
        "kind": "errorNode",
        "message": "Mint has PermanentDelegate extension",
        "name": "mintHasPermanentDelegate"
      },
      {
        "code": 121,
        "kind": "errorNode",
        "message": "Mint has TransferHook extension",
        "name": "mintHasTransferHook"
      },
      {
        "code": 122,
        "kind": "errorNode",
        "message": "Mint has TransferFee extension",
        "name": "mintHasTransferFee"
      },
      {
        "code": 123,
        "kind": "errorNode",
        "message": "Mint has MintCloseAuthority extension",
        "name": "mintHasMintCloseAuthority"
      },
      {
        "code": 124,
        "kind": "errorNode",
        "message": "Mint has Pausable extension",
        "name": "mintHasPausable"
      },
      {
        "code": 125,
        "kind": "errorNode",
        "message": "Token mint mismatch",
        "name": "mintMismatch"
      },
      {
        "code": 126,
        "kind": "errorNode",
        "message": "Invalid delegation PDA derivation",
        "name": "invalidDelegatePda"
      },
      {
        "code": 127,
        "kind": "errorNode",
        "message": "Invalid header data",
        "name": "invalidHeaderData"
      },
      {
        "code": 128,
        "kind": "errorNode",
        "message": "Delegation has expired",
        "name": "delegationExpired"
      },
      {
        "code": 129,
        "kind": "errorNode",
        "message": "Invalid amount specified",
        "name": "invalidAmount"
      },
      {
        "code": 130,
        "kind": "errorNode",
        "message": "Caller not authorized for this action",
        "name": "unauthorized"
      },
      {
        "code": 131,
        "kind": "errorNode",
        "message": "Account must be writable",
        "name": "accountNotWritable"
      },
      {
        "code": 132,
        "kind": "errorNode",
        "message": "Token account owner does not match expected",
        "name": "ataOwnerMismatch"
      },
      {
        "code": 133,
        "kind": "errorNode",
        "message": "Delegation header version is not compatible",
        "name": "delegationVersionMismatch"
      },
      {
        "code": 134,
        "kind": "errorNode",
        "message": "Account requires explicit migration",
        "name": "migrationRequired"
      },
      {
        "code": 135,
        "kind": "errorNode",
        "message": "Delegation account already exists",
        "name": "delegationAlreadyExists"
      },
      {
        "code": 136,
        "kind": "errorNode",
        "message": "Delegation init_id does not match current SubscriptionAuthority",
        "name": "staleSubscriptionAuthority"
      },
      {
        "code": 300,
        "kind": "errorNode",
        "message": "Transfer amount exceeds delegation limit",
        "name": "amountExceedsLimit"
      },
      {
        "code": 301,
        "kind": "errorNode",
        "message": "Expiry time specified is less than current time",
        "name": "fixedDelegationExpiryInPast"
      },
      {
        "code": 302,
        "kind": "errorNode",
        "message": "zero amount specified",
        "name": "fixedDelegationAmountZero"
      },
      {
        "code": 400,
        "kind": "errorNode",
        "message": "Transfer amount exceeds period limit",
        "name": "amountExceedsPeriodLimit"
      },
      {
        "code": 401,
        "kind": "errorNode",
        "message": "Period has not elapsed yet",
        "name": "periodNotElapsed"
      },
      {
        "code": 402,
        "kind": "errorNode",
        "message": "Invalid Period length",
        "name": "invalidPeriodLength"
      },
      {
        "code": 403,
        "kind": "errorNode",
        "message": "Payer provided does not match delegation",
        "name": "invalidPayerData"
      },
      {
        "code": 404,
        "kind": "errorNode",
        "message": "Past start time specified",
        "name": "recurringDelegationStartTimeInPast"
      },
      {
        "code": 405,
        "kind": "errorNode",
        "message": "start time specified is greater than expiry",
        "name": "recurringDelegationStartTimeGreaterThanExpiry"
      },
      {
        "code": 406,
        "kind": "errorNode",
        "message": "zero amount specified",
        "name": "recurringDelegationAmountZero"
      },
      {
        "code": 407,
        "kind": "errorNode",
        "message": "Delegation period has not started yet",
        "name": "delegationNotStarted"
      },
      {
        "code": 500,
        "kind": "errorNode",
        "message": "Plan is in sunset status",
        "name": "planSunset"
      },
      {
        "code": 501,
        "kind": "errorNode",
        "message": "Plan has expired",
        "name": "planExpired"
      },
      {
        "code": 502,
        "kind": "errorNode",
        "message": "Invalid Plan PDA derivation",
        "name": "invalidPlanPda"
      },
      {
        "code": 503,
        "kind": "errorNode",
        "message": "Invalid subscription PDA derivation",
        "name": "invalidSubscriptionPda"
      },
      {
        "code": 504,
        "kind": "errorNode",
        "message": "Caller is not the plan owner",
        "name": "notPlanOwner"
      },
      {
        "code": 505,
        "kind": "errorNode",
        "message": "Subscription does not belong to this plan",
        "name": "subscriptionPlanMismatch"
      },
      {
        "code": 506,
        "kind": "errorNode",
        "message": "Destination not in plan whitelist",
        "name": "unauthorizedDestination"
      },
      {
        "code": 507,
        "kind": "errorNode",
        "message": "No valid destinations provided",
        "name": "invalidNumDestinations"
      },
      {
        "code": 508,
        "kind": "errorNode",
        "message": "Subscription cancelled and past valid period",
        "name": "subscriptionCancelled"
      },
      {
        "code": 509,
        "kind": "errorNode",
        "message": "Subscription already cancelled",
        "name": "subscriptionAlreadyCancelled"
      },
      {
        "code": 510,
        "kind": "errorNode",
        "message": "Subscription must be cancelled before revoke",
        "name": "subscriptionNotCancelled"
      },
      {
        "code": 511,
        "kind": "errorNode",
        "message": "End timestamp must be zero or in the future",
        "name": "invalidEndTs"
      },
      {
        "code": 512,
        "kind": "errorNode",
        "message": "Invalid plan status value",
        "name": "invalidPlanStatus"
      },
      {
        "code": 513,
        "kind": "errorNode",
        "message": "Plan cannot be updated after sunset",
        "name": "planImmutableAfterSunset"
      },
      {
        "code": 514,
        "kind": "errorNode",
        "message": "Sunset requires a non-zero end timestamp",
        "name": "sunsetRequiresEndTs"
      },
      {
        "code": 515,
        "kind": "errorNode",
        "message": "Plan must be expired to delete",
        "name": "planNotExpired"
      },
      {
        "code": 516,
        "kind": "errorNode",
        "message": "Plan account has been closed",
        "name": "planClosed"
      },
      {
        "code": 517,
        "kind": "errorNode",
        "message": "Already subscribed to this plan",
        "name": "alreadySubscribed"
      },
      {
        "code": 518,
        "kind": "errorNode",
        "message": "Plan account already exists",
        "name": "planAlreadyExists"
      },
      {
        "code": 519,
        "kind": "errorNode",
        "message": "Subscription plan terms do not match the current plan",
        "name": "planTermsMismatch"
      },
      {
        "code": 600,
        "kind": "errorNode",
        "message": "Invalid event authority PDA",
        "name": "invalidEventAuthority"
      },
      {
        "code": 601,
        "kind": "errorNode",
        "message": "Invalid event data",
        "name": "invalidEventData"
      },
      {
        "code": 602,
        "kind": "errorNode",
        "message": "Invalid event tag prefix",
        "name": "invalidEventTag"
      },
      {
        "code": 603,
        "kind": "errorNode",
        "message": "Unknown event discriminator",
        "name": "invalidEventDiscriminator"
      }
    ],
    "instructions": [
      {
        "accounts": [
          {
            "docs": [
              "The owner of the subscription-authority program"
            ],
            "isSigner": true,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "owner"
          },
          {
            "defaultValue": {
              "kind": "pdaValueNode",
              "pda": {
                "kind": "pdaLinkNode",
                "name": "subscriptionAuthority"
              },
              "seeds": [
                {
                  "kind": "pdaSeedValueNode",
                  "name": "user",
                  "value": {
                    "kind": "accountValueNode",
                    "name": "owner"
                  }
                },
                {
                  "kind": "pdaSeedValueNode",
                  "name": "tokenMint",
                  "value": {
                    "kind": "accountValueNode",
                    "name": "tokenMint"
                  }
                }
              ]
            },
            "docs": [
              "The subscription_authority PDA that will be the delegate instance for this token"
            ],
            "isSigner": false,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "subscriptionAuthority"
          },
          {
            "docs": [
              "The token mint that we are creating a subscription-authority account for"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "tokenMint"
          },
          {
            "docs": [
              "The ata that we are setting up delegation for"
            ],
            "isSigner": false,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "userAta"
          },
          {
            "defaultValue": {
              "kind": "publicKeyValueNode",
              "publicKey": "11111111111111111111111111111111"
            },
            "docs": [
              "The system program"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "systemProgram"
          },
          {
            "docs": [
              "Token program"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "tokenProgram"
          }
        ],
        "arguments": [
          {
            "defaultValue": {
              "kind": "numberValueNode",
              "number": 0
            },
            "defaultValueStrategy": "omitted",
            "kind": "instructionArgumentNode",
            "name": "discriminator",
            "type": {
              "endian": "le",
              "format": "u8",
              "kind": "numberTypeNode"
            }
          }
        ],
        "discriminators": [
          {
            "kind": "fieldDiscriminatorNode",
            "name": "discriminator",
            "offset": 0
          }
        ],
        "kind": "instructionNode",
        "name": "initSubscriptionAuthority"
      },
      {
        "accounts": [
          {
            "docs": [
              "The user creating the delegation"
            ],
            "isSigner": true,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "delegator"
          },
          {
            "docs": [
              "The subscription_authority PDA for this token"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "subscriptionAuthority"
          },
          {
            "docs": [
              "The fixed delegation PDA being created"
            ],
            "isSigner": false,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "delegationAccount"
          },
          {
            "docs": [
              "The user receiving delegation rights"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "delegatee"
          },
          {
            "defaultValue": {
              "kind": "publicKeyValueNode",
              "publicKey": "11111111111111111111111111111111"
            },
            "docs": [
              "The system program"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "systemProgram"
          }
        ],
        "arguments": [
          {
            "defaultValue": {
              "kind": "numberValueNode",
              "number": 1
            },
            "defaultValueStrategy": "omitted",
            "kind": "instructionArgumentNode",
            "name": "discriminator",
            "type": {
              "endian": "le",
              "format": "u8",
              "kind": "numberTypeNode"
            }
          },
          {
            "kind": "instructionArgumentNode",
            "name": "fixedDelegation",
            "type": {
              "kind": "definedTypeLinkNode",
              "name": "createFixedDelegationData"
            }
          }
        ],
        "discriminators": [
          {
            "kind": "fieldDiscriminatorNode",
            "name": "discriminator",
            "offset": 0
          }
        ],
        "kind": "instructionNode",
        "name": "createFixedDelegation"
      },
      {
        "accounts": [
          {
            "docs": [
              "The user creating the delegation"
            ],
            "isSigner": true,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "delegator"
          },
          {
            "docs": [
              "The subscription_authority PDA for this token"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "subscriptionAuthority"
          },
          {
            "docs": [
              "The recurring delegation PDA being created"
            ],
            "isSigner": false,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "delegationAccount"
          },
          {
            "docs": [
              "The user receiving delegation rights"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "delegatee"
          },
          {
            "defaultValue": {
              "kind": "publicKeyValueNode",
              "publicKey": "11111111111111111111111111111111"
            },
            "docs": [
              "The system program"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "systemProgram"
          }
        ],
        "arguments": [
          {
            "defaultValue": {
              "kind": "numberValueNode",
              "number": 2
            },
            "defaultValueStrategy": "omitted",
            "kind": "instructionArgumentNode",
            "name": "discriminator",
            "type": {
              "endian": "le",
              "format": "u8",
              "kind": "numberTypeNode"
            }
          },
          {
            "kind": "instructionArgumentNode",
            "name": "recurringDelegation",
            "type": {
              "kind": "definedTypeLinkNode",
              "name": "createRecurringDelegationData"
            }
          }
        ],
        "discriminators": [
          {
            "kind": "fieldDiscriminatorNode",
            "name": "discriminator",
            "offset": 0
          }
        ],
        "kind": "instructionNode",
        "name": "createRecurringDelegation"
      },
      {
        "accounts": [
          {
            "docs": [
              "The delegator revoking the delegation (receives rent)"
            ],
            "isSigner": true,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "authority"
          },
          {
            "docs": [
              "The delegation PDA to close"
            ],
            "isSigner": false,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "delegationAccount"
          }
        ],
        "arguments": [
          {
            "defaultValue": {
              "kind": "numberValueNode",
              "number": 3
            },
            "defaultValueStrategy": "omitted",
            "kind": "instructionArgumentNode",
            "name": "discriminator",
            "type": {
              "endian": "le",
              "format": "u8",
              "kind": "numberTypeNode"
            }
          }
        ],
        "discriminators": [
          {
            "kind": "fieldDiscriminatorNode",
            "name": "discriminator",
            "offset": 0
          }
        ],
        "kind": "instructionNode",
        "name": "revokeDelegation"
      },
      {
        "accounts": [
          {
            "docs": [
              "The fixed delegation PDA to transfer from"
            ],
            "isSigner": false,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "delegationPda"
          },
          {
            "docs": [
              "The subscription-authority PDA"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "subscriptionAuthority"
          },
          {
            "docs": [
              "The delegator's ATA to transfer from"
            ],
            "isSigner": false,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "delegatorAta"
          },
          {
            "docs": [
              "The receiver's ATA to transfer to"
            ],
            "isSigner": false,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "receiverAta"
          },
          {
            "docs": [
              "Token program"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "tokenProgram"
          },
          {
            "docs": [
              "The delegatee signing the transfer"
            ],
            "isSigner": true,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "delegatee"
          },
          {
            "defaultValue": {
              "kind": "publicKeyValueNode",
              "publicKey": "3Hnj4BYoDgtpBuqXfiy7Y8cNa3jXaNd4oqgSXBzkMcH7"
            },
            "docs": [
              "The event authority PDA"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "eventAuthority"
          },
          {
            "defaultValue": {
              "kind": "publicKeyValueNode",
              "publicKey": "De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44"
            },
            "docs": [
              "This program (for self-CPI)"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "selfProgram"
          }
        ],
        "arguments": [
          {
            "defaultValue": {
              "kind": "numberValueNode",
              "number": 4
            },
            "defaultValueStrategy": "omitted",
            "kind": "instructionArgumentNode",
            "name": "discriminator",
            "type": {
              "endian": "le",
              "format": "u8",
              "kind": "numberTypeNode"
            }
          },
          {
            "kind": "instructionArgumentNode",
            "name": "transferData",
            "type": {
              "kind": "definedTypeLinkNode",
              "name": "transferData"
            }
          }
        ],
        "discriminators": [
          {
            "kind": "fieldDiscriminatorNode",
            "name": "discriminator",
            "offset": 0
          }
        ],
        "kind": "instructionNode",
        "name": "transferFixed"
      },
      {
        "accounts": [
          {
            "docs": [
              "The recurring delegation PDA to transfer from"
            ],
            "isSigner": false,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "delegationPda"
          },
          {
            "docs": [
              "The subscription-authority PDA"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "subscriptionAuthority"
          },
          {
            "docs": [
              "The delegator's ATA to transfer from"
            ],
            "isSigner": false,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "delegatorAta"
          },
          {
            "docs": [
              "The receiver's ATA to transfer to"
            ],
            "isSigner": false,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "receiverAta"
          },
          {
            "docs": [
              "Token program"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "tokenProgram"
          },
          {
            "docs": [
              "The delegatee signing the transfer"
            ],
            "isSigner": true,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "delegatee"
          },
          {
            "defaultValue": {
              "kind": "publicKeyValueNode",
              "publicKey": "3Hnj4BYoDgtpBuqXfiy7Y8cNa3jXaNd4oqgSXBzkMcH7"
            },
            "docs": [
              "The event authority PDA"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "eventAuthority"
          },
          {
            "defaultValue": {
              "kind": "publicKeyValueNode",
              "publicKey": "De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44"
            },
            "docs": [
              "This program (for self-CPI)"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "selfProgram"
          }
        ],
        "arguments": [
          {
            "defaultValue": {
              "kind": "numberValueNode",
              "number": 5
            },
            "defaultValueStrategy": "omitted",
            "kind": "instructionArgumentNode",
            "name": "discriminator",
            "type": {
              "endian": "le",
              "format": "u8",
              "kind": "numberTypeNode"
            }
          },
          {
            "kind": "instructionArgumentNode",
            "name": "transferData",
            "type": {
              "kind": "definedTypeLinkNode",
              "name": "transferData"
            }
          }
        ],
        "discriminators": [
          {
            "kind": "fieldDiscriminatorNode",
            "name": "discriminator",
            "offset": 0
          }
        ],
        "kind": "instructionNode",
        "name": "transferRecurring"
      },
      {
        "accounts": [
          {
            "docs": [
              "The user who owns the SubscriptionAuthority PDA (receives rent)"
            ],
            "isSigner": true,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "user"
          },
          {
            "docs": [
              "The SubscriptionAuthority PDA to close"
            ],
            "isSigner": false,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "subscriptionAuthority"
          }
        ],
        "arguments": [
          {
            "defaultValue": {
              "kind": "numberValueNode",
              "number": 6
            },
            "defaultValueStrategy": "omitted",
            "kind": "instructionArgumentNode",
            "name": "discriminator",
            "type": {
              "endian": "le",
              "format": "u8",
              "kind": "numberTypeNode"
            }
          }
        ],
        "discriminators": [
          {
            "kind": "fieldDiscriminatorNode",
            "name": "discriminator",
            "offset": 0
          }
        ],
        "kind": "instructionNode",
        "name": "closeSubscriptionAuthority"
      },
      {
        "accounts": [
          {
            "docs": [
              "The merchant creating the plan"
            ],
            "isSigner": true,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "merchant"
          },
          {
            "docs": [
              "The plan PDA being created"
            ],
            "isSigner": false,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "planPda"
          },
          {
            "docs": [
              "The token mint"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "tokenMint"
          },
          {
            "defaultValue": {
              "kind": "publicKeyValueNode",
              "publicKey": "11111111111111111111111111111111"
            },
            "docs": [
              "The system program"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "systemProgram"
          },
          {
            "defaultValue": {
              "kind": "publicKeyValueNode",
              "publicKey": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
            },
            "docs": [
              "The token program"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "tokenProgram"
          }
        ],
        "arguments": [
          {
            "defaultValue": {
              "kind": "numberValueNode",
              "number": 7
            },
            "defaultValueStrategy": "omitted",
            "kind": "instructionArgumentNode",
            "name": "discriminator",
            "type": {
              "endian": "le",
              "format": "u8",
              "kind": "numberTypeNode"
            }
          },
          {
            "kind": "instructionArgumentNode",
            "name": "planData",
            "type": {
              "kind": "definedTypeLinkNode",
              "name": "planData"
            }
          }
        ],
        "discriminators": [
          {
            "kind": "fieldDiscriminatorNode",
            "name": "discriminator",
            "offset": 0
          }
        ],
        "kind": "instructionNode",
        "name": "createPlan"
      },
      {
        "accounts": [
          {
            "docs": [
              "The plan owner updating the plan"
            ],
            "isSigner": true,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "owner"
          },
          {
            "docs": [
              "The plan PDA being updated"
            ],
            "isSigner": false,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "planPda"
          }
        ],
        "arguments": [
          {
            "defaultValue": {
              "kind": "numberValueNode",
              "number": 8
            },
            "defaultValueStrategy": "omitted",
            "kind": "instructionArgumentNode",
            "name": "discriminator",
            "type": {
              "endian": "le",
              "format": "u8",
              "kind": "numberTypeNode"
            }
          },
          {
            "kind": "instructionArgumentNode",
            "name": "updatePlanData",
            "type": {
              "kind": "definedTypeLinkNode",
              "name": "updatePlanData"
            }
          }
        ],
        "discriminators": [
          {
            "kind": "fieldDiscriminatorNode",
            "name": "discriminator",
            "offset": 0
          }
        ],
        "kind": "instructionNode",
        "name": "updatePlan"
      },
      {
        "accounts": [
          {
            "docs": [
              "The plan owner deleting the plan (receives rent)"
            ],
            "isSigner": true,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "owner"
          },
          {
            "docs": [
              "The plan PDA being deleted"
            ],
            "isSigner": false,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "planPda"
          }
        ],
        "arguments": [
          {
            "defaultValue": {
              "kind": "numberValueNode",
              "number": 9
            },
            "defaultValueStrategy": "omitted",
            "kind": "instructionArgumentNode",
            "name": "discriminator",
            "type": {
              "endian": "le",
              "format": "u8",
              "kind": "numberTypeNode"
            }
          }
        ],
        "discriminators": [
          {
            "kind": "fieldDiscriminatorNode",
            "name": "discriminator",
            "offset": 0
          }
        ],
        "kind": "instructionNode",
        "name": "deletePlan"
      },
      {
        "accounts": [
          {
            "docs": [
              "The subscription delegation PDA"
            ],
            "isSigner": false,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "subscriptionPda"
          },
          {
            "docs": [
              "The plan PDA"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "planPda"
          },
          {
            "docs": [
              "The subscription-authority PDA"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "subscriptionAuthority"
          },
          {
            "docs": [
              "The delegator's ATA to transfer from"
            ],
            "isSigner": false,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "delegatorAta"
          },
          {
            "docs": [
              "The receiver's ATA to transfer to"
            ],
            "isSigner": false,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "receiverAta"
          },
          {
            "docs": [
              "The authorized puller (plan owner or whitelisted)"
            ],
            "isSigner": true,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "caller"
          },
          {
            "docs": [
              "Token program"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "tokenProgram"
          },
          {
            "defaultValue": {
              "kind": "publicKeyValueNode",
              "publicKey": "3Hnj4BYoDgtpBuqXfiy7Y8cNa3jXaNd4oqgSXBzkMcH7"
            },
            "docs": [
              "The event authority PDA"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "eventAuthority"
          },
          {
            "defaultValue": {
              "kind": "publicKeyValueNode",
              "publicKey": "De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44"
            },
            "docs": [
              "This program (for self-CPI)"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "selfProgram"
          }
        ],
        "arguments": [
          {
            "defaultValue": {
              "kind": "numberValueNode",
              "number": 10
            },
            "defaultValueStrategy": "omitted",
            "kind": "instructionArgumentNode",
            "name": "discriminator",
            "type": {
              "endian": "le",
              "format": "u8",
              "kind": "numberTypeNode"
            }
          },
          {
            "kind": "instructionArgumentNode",
            "name": "transferData",
            "type": {
              "kind": "definedTypeLinkNode",
              "name": "transferData"
            }
          }
        ],
        "discriminators": [
          {
            "kind": "fieldDiscriminatorNode",
            "name": "discriminator",
            "offset": 0
          }
        ],
        "kind": "instructionNode",
        "name": "transferSubscription"
      },
      {
        "accounts": [
          {
            "docs": [
              "The subscriber creating the subscription (pays rent)"
            ],
            "isSigner": true,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "subscriber"
          },
          {
            "docs": [
              "The merchant who owns the plan"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "merchant"
          },
          {
            "docs": [
              "The plan PDA to subscribe to"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "planPda"
          },
          {
            "defaultValue": {
              "kind": "pdaValueNode",
              "pda": {
                "kind": "pdaLinkNode",
                "name": "subscriptionDelegation"
              },
              "seeds": [
                {
                  "kind": "pdaSeedValueNode",
                  "name": "planPda",
                  "value": {
                    "kind": "accountValueNode",
                    "name": "planPda"
                  }
                },
                {
                  "kind": "pdaSeedValueNode",
                  "name": "subscriber",
                  "value": {
                    "kind": "accountValueNode",
                    "name": "subscriber"
                  }
                }
              ]
            },
            "docs": [
              "The subscription PDA being created"
            ],
            "isSigner": false,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "subscriptionPda"
          },
          {
            "docs": [
              "The subscriber's SubscriptionAuthority PDA for the plan's mint"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "subscriptionAuthorityPda"
          },
          {
            "defaultValue": {
              "kind": "publicKeyValueNode",
              "publicKey": "11111111111111111111111111111111"
            },
            "docs": [
              "The system program"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "systemProgram"
          },
          {
            "defaultValue": {
              "kind": "publicKeyValueNode",
              "publicKey": "3Hnj4BYoDgtpBuqXfiy7Y8cNa3jXaNd4oqgSXBzkMcH7"
            },
            "docs": [
              "The event authority PDA"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "eventAuthority"
          },
          {
            "defaultValue": {
              "kind": "publicKeyValueNode",
              "publicKey": "De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44"
            },
            "docs": [
              "This program (for self-CPI)"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "selfProgram"
          }
        ],
        "arguments": [
          {
            "defaultValue": {
              "kind": "numberValueNode",
              "number": 11
            },
            "defaultValueStrategy": "omitted",
            "kind": "instructionArgumentNode",
            "name": "discriminator",
            "type": {
              "endian": "le",
              "format": "u8",
              "kind": "numberTypeNode"
            }
          },
          {
            "kind": "instructionArgumentNode",
            "name": "subscribeData",
            "type": {
              "kind": "definedTypeLinkNode",
              "name": "subscribeData"
            }
          }
        ],
        "discriminators": [
          {
            "kind": "fieldDiscriminatorNode",
            "name": "discriminator",
            "offset": 0
          }
        ],
        "kind": "instructionNode",
        "name": "subscribe"
      },
      {
        "accounts": [
          {
            "docs": [
              "The subscriber cancelling the subscription"
            ],
            "isSigner": true,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "subscriber"
          },
          {
            "docs": [
              "The plan PDA for the subscription"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "planPda"
          },
          {
            "defaultValue": {
              "kind": "pdaValueNode",
              "pda": {
                "kind": "pdaLinkNode",
                "name": "subscriptionDelegation"
              },
              "seeds": [
                {
                  "kind": "pdaSeedValueNode",
                  "name": "planPda",
                  "value": {
                    "kind": "accountValueNode",
                    "name": "planPda"
                  }
                },
                {
                  "kind": "pdaSeedValueNode",
                  "name": "subscriber",
                  "value": {
                    "kind": "accountValueNode",
                    "name": "subscriber"
                  }
                }
              ]
            },
            "docs": [
              "The subscription PDA being cancelled"
            ],
            "isSigner": false,
            "isWritable": true,
            "kind": "instructionAccountNode",
            "name": "subscriptionPda"
          },
          {
            "defaultValue": {
              "kind": "publicKeyValueNode",
              "publicKey": "3Hnj4BYoDgtpBuqXfiy7Y8cNa3jXaNd4oqgSXBzkMcH7"
            },
            "docs": [
              "The event authority PDA"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "eventAuthority"
          },
          {
            "defaultValue": {
              "kind": "publicKeyValueNode",
              "publicKey": "De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44"
            },
            "docs": [
              "This program (for self-CPI)"
            ],
            "isSigner": false,
            "isWritable": false,
            "kind": "instructionAccountNode",
            "name": "selfProgram"
          }
        ],
        "arguments": [
          {
            "defaultValue": {
              "kind": "numberValueNode",
              "number": 12
            },
            "defaultValueStrategy": "omitted",
            "kind": "instructionArgumentNode",
            "name": "discriminator",
            "type": {
              "endian": "le",
              "format": "u8",
              "kind": "numberTypeNode"
            }
          }
        ],
        "discriminators": [
          {
            "kind": "fieldDiscriminatorNode",
            "name": "discriminator",
            "offset": 0
          }
        ],
        "kind": "instructionNode",
        "name": "cancelSubscription"
      }
    ],
    "kind": "programNode",
    "name": "subscriptions",
    "pdas": [
      {
        "kind": "pdaNode",
        "name": "fixedDelegation",
        "seeds": [
          {
            "kind": "constantPdaSeedNode",
            "type": {
              "encoding": "utf8",
              "kind": "stringTypeNode"
            },
            "value": {
              "kind": "stringValueNode",
              "string": "delegation"
            }
          },
          {
            "kind": "variablePdaSeedNode",
            "name": "subscriptionAuthority",
            "type": {
              "kind": "publicKeyTypeNode"
            }
          },
          {
            "kind": "variablePdaSeedNode",
            "name": "delegator",
            "type": {
              "kind": "publicKeyTypeNode"
            }
          },
          {
            "kind": "variablePdaSeedNode",
            "name": "delegatee",
            "type": {
              "kind": "publicKeyTypeNode"
            }
          },
          {
            "kind": "variablePdaSeedNode",
            "name": "nonce",
            "type": {
              "endian": "le",
              "format": "u64",
              "kind": "numberTypeNode"
            }
          }
        ]
      },
      {
        "kind": "pdaNode",
        "name": "plan",
        "seeds": [
          {
            "kind": "constantPdaSeedNode",
            "type": {
              "encoding": "utf8",
              "kind": "stringTypeNode"
            },
            "value": {
              "kind": "stringValueNode",
              "string": "plan"
            }
          },
          {
            "kind": "variablePdaSeedNode",
            "name": "owner",
            "type": {
              "kind": "publicKeyTypeNode"
            }
          },
          {
            "kind": "variablePdaSeedNode",
            "name": "planId",
            "type": {
              "endian": "le",
              "format": "u64",
              "kind": "numberTypeNode"
            }
          }
        ]
      },
      {
        "kind": "pdaNode",
        "name": "recurringDelegation",
        "seeds": [
          {
            "kind": "constantPdaSeedNode",
            "type": {
              "encoding": "utf8",
              "kind": "stringTypeNode"
            },
            "value": {
              "kind": "stringValueNode",
              "string": "delegation"
            }
          },
          {
            "kind": "variablePdaSeedNode",
            "name": "subscriptionAuthority",
            "type": {
              "kind": "publicKeyTypeNode"
            }
          },
          {
            "kind": "variablePdaSeedNode",
            "name": "delegator",
            "type": {
              "kind": "publicKeyTypeNode"
            }
          },
          {
            "kind": "variablePdaSeedNode",
            "name": "delegatee",
            "type": {
              "kind": "publicKeyTypeNode"
            }
          },
          {
            "kind": "variablePdaSeedNode",
            "name": "nonce",
            "type": {
              "endian": "le",
              "format": "u64",
              "kind": "numberTypeNode"
            }
          }
        ]
      },
      {
        "kind": "pdaNode",
        "name": "subscriptionAuthority",
        "seeds": [
          {
            "kind": "constantPdaSeedNode",
            "type": {
              "encoding": "utf8",
              "kind": "stringTypeNode"
            },
            "value": {
              "kind": "stringValueNode",
              "string": "SubscriptionAuthority"
            }
          },
          {
            "kind": "variablePdaSeedNode",
            "name": "user",
            "type": {
              "kind": "publicKeyTypeNode"
            }
          },
          {
            "kind": "variablePdaSeedNode",
            "name": "tokenMint",
            "type": {
              "kind": "publicKeyTypeNode"
            }
          }
        ]
      },
      {
        "kind": "pdaNode",
        "name": "subscriptionDelegation",
        "seeds": [
          {
            "kind": "constantPdaSeedNode",
            "type": {
              "encoding": "utf8",
              "kind": "stringTypeNode"
            },
            "value": {
              "kind": "stringValueNode",
              "string": "subscription"
            }
          },
          {
            "kind": "variablePdaSeedNode",
            "name": "planPda",
            "type": {
              "kind": "publicKeyTypeNode"
            }
          },
          {
            "kind": "variablePdaSeedNode",
            "name": "subscriber",
            "type": {
              "kind": "publicKeyTypeNode"
            }
          }
        ]
      },
      {
        "kind": "pdaNode",
        "name": "eventAuthority",
        "seeds": [
          {
            "kind": "constantPdaSeedNode",
            "type": {
              "encoding": "utf8",
              "kind": "stringTypeNode"
            },
            "value": {
              "kind": "stringValueNode",
              "string": "event_authority"
            }
          }
        ]
      }
    ],
    "publicKey": "De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44",
    "version": "0.1.0"
  },
  "standard": "codama",
  "version": "1.0.0"
}
